【发布时间】:2020-07-13 11:13:39
【问题描述】:
我有一个 Windows 服务发出 HTTP POST 请求。 REST 端点正在工作,并且已单独测试。调用PostAsync 后,调试器不会继续或抛出错误。导致这种行为的可能问题是什么?下面是sn-p发送POST请求的代码,
编辑:我已将其更改为 async-await 并使用 ConfigureAWait,但这并没有解决问题。我需要知道是什么导致函数没有返回任何值。
HttpClientHandler handler = GetCookieHandler();
using(HttpClient client = new HttpClient(handler)) {
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("basic", accessToken);
client.DefaultRequestHeaders.Add("UniqueId", _configReader.UniqueId);
SetRequestCookie(handler);
string jsonContent = JsonConvert.SerializeObject(content);
HttpResponseMessage response = client.PostAsync(url, new StringContent(jsonContent, Encoding.UTF8, "application/json")).Result;
SaveCookie(handler, response.RequestMessage.RequestUri);
if (response.StatusCode == HttpStatusCode.Unauthorized) {
var customerJsonString = response.Content.ReadAsStringAsync().Result;
Error data = JsonConvert.DeserializeObject < Error > (customerJsonString);
switch (data.ErrorCode) {
case AccessTokenValidationCodes.ExpiredOrInvalidDateTime:
logger.Warn("Expired AccessToken");
break;
default:
break;
}
}
if (response.StatusCode == HttpStatusCode.Unauthorized) {
logger.Error("Request :{0}, AccessToken {1} response Unauthorized", apirUrl, accessToken);
return null;
}
if (response.StatusCode == HttpStatusCode.InternalServerError) {
logger.Warn("Request response InternalServerError");
return null;
}
return response;
}
【问题讨论】:
-
这能回答你的问题吗? HttpClient PostAsync() never return response
-
我在发布之前查看了这个,但更改为 async-await 和 ConfigureAwait(false) 并没有做太多。
-
能否包含函数的签名。而且,顺便说一句;在大多数情况下,最好添加异步等待模式。
-
public HttpResponseMessage PostSync(string apirUrl, object content)这是函数签名
标签: c# http windows-services