前言
今天,在对接一个第三方平台开放接口时遇到一个很棘手的问题,根据接口文档组装好报文,使用HttpClient
发起POST
请求时一直超时,对方服务器一直不给任何响应。
发起请求的代码如下:
using (var httpClient = new HttpClient())
{
var msg = new HttpRequestMessage()
{
Content = new StringContent(postJson, Encoding.UTF8, "application/json"),
Method = HttpMethod.Post,
RequestUri = new Uri(apiUrl),
};
// 这里会一直阻塞,直到超时
var res = httpClient.SendAsync(msg).ConfigureAwait(false).GetAwaiter().GetResult();
if (res.StatusCode != HttpStatusCode.OK)
{
throw new Exception(res.StatusCode.ToString());
}
return res.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult();
}
复制代码
异步请求超时取消错误如下:
这种情况首先怀疑对方服务是不是有问题 然而经过确认,对方服务没问题,并且使用将请求的url
和报文
粘贴到PostMan
进行请求,迅速得到返回报文,一切正常。
排除了对方服务的问题,那是我们的代码问题? 可是上面HttpClient
发起Post
请求的代码写了不知道多少遍,一直都没问题