在没有身份验证C#的情况下发出POST请求时超时

时间:2020-02-21 07:28:06

标签: c# rest post httprequest httpclient

我想向REST服务发出POST请求。没有身份验证,它只有两个自定义的标头。我的代码如下。我收到错误消息:

mscorlib.dll中发生了'System.AggregateException'类型的异常,但未在用户代码中处理。

“连接尝试失败,因为连接的一方在一段时间后未正确响应,或者建立的连接失败,因为连接的主机未能响应”

你能帮忙吗?代码有什么问题?

 HttpClient client = new HttpClient();
 client.DefaultRequestHeaders.Accept.Clear();
 client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
 client.DefaultRequestHeaders.Add("id", "8888");
 client.DefaultRequestHeaders.Add("type", "CUSTOMER");
 Uri uri = new Uri(requestUri);
 var ob = new { id= "5", color= "pink" };
 var transferJson = JsonConvert.SerializeObject(ob);
 var content = new StringContent(transferJson, Encoding.UTF8, "application/json");
 HttpResponseMessage responseMessage = client.PostAsync(uri, content).Result;

1 个答案:

答案 0 :(得分:0)

您的代码本身看起来没有错误。该错误消息表明该请求进入了超时(timout)状态,这意味着HttpClient等待设置的时间,如果服务器不响应,则HttpClient终止。您是否尝试过对服务器执行ping操作以确保其确实已启动并正在运行?

在这种情况下,您可以尝试增加HttpClient的超时值(请参见此处https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient.timeout?view=netframework-4.8)。

此外,您可以尝试使用邮递员等其他工具发送请求,以查看问题是否出在代码,参数(如超时)还是服务器本身之内。