C# HttpClient async POST 请求任务未返回值
C# HttpClient async POST request Task not returning a value
我正在使用 C#/Xamarin 中的 HttpClient 执行异步 POST 请求:
private async Task<string> ServicePostRequest (string url, string parameters)
{
string result = String.Empty;
using (var client = new HttpClient()) {
HttpContent content = new StringContent (parameters);
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue ("application/x-www-form-urlencoded");
client.Timeout = new TimeSpan (0, 0, 15);
using(var response = await client.PostAsync(url, content)){
using (var responseContent = response.Content) {
result = await responseContent.ReadAsStringAsync ();
Console.WriteLine (result);
return result;
}
}
}
}
当我执行以下代码时,预期结果 (JSON) 被正确记录在终端中:
Task<string> result = ServicePostRequest("http://www.url.com", "parameters");
现在,我想将此结果放入一个变量中以便能够对其进行解析。但是,当我使用以下代码时,根本没有记录任何结果并且应用程序被冻结:
Task<string> result = ServicePostRequest("http://www.url.com", "parameters");
string myResult = result.Result;
另外,当我使用 result.Wait() 方法时,应用程序根本没有响应。
非常感谢任何帮助。
因为 ServicePostRequest 是一个可等待的方法,改变这个:
Task<string> result = ServicePostRequest("http://www.url.com", "parameters");
string myResult = result.Result;
收件人:
string result = await ServicePostRequest("http://www.url.com", "parameters");
旁注:确保调用方法是异步方法。
我正在使用 C#/Xamarin 中的 HttpClient 执行异步 POST 请求:
private async Task<string> ServicePostRequest (string url, string parameters)
{
string result = String.Empty;
using (var client = new HttpClient()) {
HttpContent content = new StringContent (parameters);
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue ("application/x-www-form-urlencoded");
client.Timeout = new TimeSpan (0, 0, 15);
using(var response = await client.PostAsync(url, content)){
using (var responseContent = response.Content) {
result = await responseContent.ReadAsStringAsync ();
Console.WriteLine (result);
return result;
}
}
}
}
当我执行以下代码时,预期结果 (JSON) 被正确记录在终端中:
Task<string> result = ServicePostRequest("http://www.url.com", "parameters");
现在,我想将此结果放入一个变量中以便能够对其进行解析。但是,当我使用以下代码时,根本没有记录任何结果并且应用程序被冻结:
Task<string> result = ServicePostRequest("http://www.url.com", "parameters");
string myResult = result.Result;
另外,当我使用 result.Wait() 方法时,应用程序根本没有响应。
非常感谢任何帮助。
因为 ServicePostRequest 是一个可等待的方法,改变这个:
Task<string> result = ServicePostRequest("http://www.url.com", "parameters");
string myResult = result.Result;
收件人:
string result = await ServicePostRequest("http://www.url.com", "parameters");
旁注:确保调用方法是异步方法。