![](/img/trans.png)
[英]Why i can't send post request to Azur Face Vision with UnityWebRequest but's is work with HttpClient?
[英]Why can't I specify Timeout per request for HttpClient?
实际的问题是:为什么以只能为整个HttpClient设置Timeout属性的方式而不是基于每个请求的方式实现HttpClient?
这是我的用例:
假设我对不同的终结点有不同的超时值,则需要有单独的HttpClient。 每个端点一个。
现在的问题是:我们可以为整个HttpClient实例设置Timeout值的事实背后的原因是什么?
我最初的想法是,与超时有关的是tcp连接的属性,该属性是在HttpClient后面创建的,只能为整个连接设置。 但是在对HttpClient的反编译源进行调查之后,我发现Timeout设置如下:
private void SetTimeout(CancellationTokenSource cancellationTokenSource)
{
if (!(this.timeout != HttpClient.infiniteTimeout))
return;
cancellationTokenSource.CancelAfter(this.timeout);
}
除此以外,我找不到其他用途。 将超时设置为CancellationTokenSource似乎与tcp连接没有任何关系,并且正在为每个请求创建CancellationTokenSource本身。
欢迎任何想法和见解。 谢谢。
对于此类工作,我使用https://github.com/jgiacomini/Tiny.RestClient
对于每个请求,您都可以这样设置超时:request.WithTimeout(TimeSpan.FromSeconds(100));
有了它,您可以共享相同的HttpClient,并根据请求具有不同的超时时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.