异步 HTTP 响应消息
Asynchronous HTTP Response Message
所以这个问题已经存在一段时间了。我不确定为什么 Visual Studio 调试器会跳过我的 Http 响应消息步骤。这是我目前的代码:
public async void APIcall()
{
HttpClient httpClient = new HttpClient();
HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, "http://xxxx");
requestMessage.Headers.Add("Accept", "application/json");
requestMessage.Headers.Add("ContentType", "application/json");
requestMessage.Headers.Add("RequestMessageGUID", "xxxxxx");
HttpResponseMessage response = await httpClient.SendAsync(requestMessage);
string result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
Console.ReadLine();
}
请提出您的建议并帮助解决此问题。
首先,您应该避免对 void
方法执行 async
,除非它是事件处理程序。使用 Task
即使您没有返回任何东西。
接下来您假设您将始终从您的请求中获得内容。
你应该先看看有没有东西要拿
当你在 void 方法上使用异步时,你的异常不会被捕获。这可能就是为什么它一直像你说的那样跳过。应该是出错了。
private static HttpClient httpClient = new HttpClient();
public async Task APIcall() {
try {
HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, "http://xxxx");
requestMessage.Headers.Add("Accept", "application/json");
requestMessage.Headers.Add("ContentType", "application/json");
requestMessage.Headers.Add("RequestMessageGUID", "xxxxxx");
HttpResponseMessage response = await httpClient.SendAsync(requestMessage);
if (response.Content.Headers.ContentLength.GetValueOrDefault() > 0) {
string result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
} else {
Console.WriteLine(response.StatusCode);
}
} catch(Exception ex) {
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
所以这个问题已经存在一段时间了。我不确定为什么 Visual Studio 调试器会跳过我的 Http 响应消息步骤。这是我目前的代码:
public async void APIcall()
{
HttpClient httpClient = new HttpClient();
HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, "http://xxxx");
requestMessage.Headers.Add("Accept", "application/json");
requestMessage.Headers.Add("ContentType", "application/json");
requestMessage.Headers.Add("RequestMessageGUID", "xxxxxx");
HttpResponseMessage response = await httpClient.SendAsync(requestMessage);
string result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
Console.ReadLine();
}
请提出您的建议并帮助解决此问题。
首先,您应该避免对 void
方法执行 async
,除非它是事件处理程序。使用 Task
即使您没有返回任何东西。
接下来您假设您将始终从您的请求中获得内容。
你应该先看看有没有东西要拿
当你在 void 方法上使用异步时,你的异常不会被捕获。这可能就是为什么它一直像你说的那样跳过。应该是出错了。
private static HttpClient httpClient = new HttpClient();
public async Task APIcall() {
try {
HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, "http://xxxx");
requestMessage.Headers.Add("Accept", "application/json");
requestMessage.Headers.Add("ContentType", "application/json");
requestMessage.Headers.Add("RequestMessageGUID", "xxxxxx");
HttpResponseMessage response = await httpClient.SendAsync(requestMessage);
if (response.Content.Headers.ContentLength.GetValueOrDefault() > 0) {
string result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
} else {
Console.WriteLine(response.StatusCode);
}
} catch(Exception ex) {
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}