Xamarin HttpClient 请求超时

tsc*_*ege 2 c# xamarin xamarin.forms

在 Xamarin.Forms 应用程序中,我尝试连接到 Exosites api(它不是项目的一部分,因此我无法更改 SignalR 左右的那个)。

对于“正常”请求,这一切都很好。

api 还支持长轮询请求 - 在手册中它说客户端必须为请求设置标头“Request-Timeout”。

var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, requestUri);
request.Headers.Add("Request-Timeout", "10000");
var response = await client.SendAsync(request);
Run Code Online (Sandbox Code Playgroud)

但是这样做,我没有得到任何答复,即使我将超时设置为非常小的值,例如 1 (ms)。如果我对 Exosites 上的另一个端点的请求设置超时,但它没有检查它,它工作正常。发送没有“Request-Timeout”标头的完全相同的请求也可以正常工作。

有没有人有使用 HttpClient 在 Xamarin 中进行长轮询调用的经验?

非常感谢!

切格

Cha*_*ell 6

实际上,这比这要容易得多。

using (var client = new HttpClient())
{
    client.Timeout = TimeSpan.FromSeconds(_timeoutSeconds);
}
Run Code Online (Sandbox Code Playgroud)

PS:请务必始终将您的包裹new HttpClient()在一个using块中。

  • 不是每次 HttpClient 都进行处置的好理由。这是很多人的常见错误 http://stackoverflow.com/questions/15705092/do-httpclient-and-httpclienthandler-have-to-be-disposed (4认同)