簡體   English   中英

C#HttpClient異步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");

側面說明: 確保調用方法是異步方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM