繁体   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