我正在尝试在Xamarin Android应用中管理连接问题。 我使用Xamarin.Essentials检查连接性,然后使用Refit来获取数据:
var reqUtenti = new ReqUtenti();
tokenSource.CancelAfter(20000);
CancellationToken token = tokenSource.Token;
var api = RestService.For<IUtentiApi>("http://10.0.2.2:3105");
var respUtenti = new RespUtenti();
try
{
respUtenti = await api.GetUtentiAsync(reqUtenti, token);
respUtenti.status = 0;
}
catch (ApiException exception)
{
respUtenti.status = 1;
}
catch (OperationCanceledException)
{
respUtenti.status = 2;
}
catch (Exception exception)
{
respUtenti.status = 3;
}
让我们说,使用正在运行的Web服务,检索时间不应超过20秒,因此我使用CancellationToken设置了超时时间。它可以工作并引发OperationCanceledException。 如果20秒钟后Web服务未运行/无法访问,也会发生同样的情况。
如果我没有设置该超时时间,并且Web服务无法访问/无法正常工作,则在70/80秒后会出现httpRequestError。 我想更改此超时,并在几秒钟后收到httpRequestError。 使用HttpWebRequest之后,我可以通过设置ReadWriteTimeout来完成此操作。
本质上,我想区分超时:一个用于完成整个过程,另一个用于建立http连接。
UPDATE1 标题已从“改装”更正为“改装”,但实际上是“改装(https://github.com/reactiveui/refit)
UPDATE2 问题不在于如何为改装请求设置超时,我在示例中进行了设置。该超时涉及检索数据的整个过程。 我的问题是如何为HTTP连接基础的套接字连接设置超时。 HttpWebRequest可能存在两个超时:超时(整个进程)和ReadWriteTimeout(建立连接的超时)。我知道Refit可与HttpClient配合使用,因此可以为连接请求设置超时时间吗?