[英]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");
側面說明: 確保調用方法是異步方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.