Windows phone httpclient没有工作

12 浏览
0 Comments

Windows phone httpclient没有工作

我有以下的代码。异步调用从来没有返回任何东西。即使是对于google.com。\n

try
{
    using (var client = new HttpClient())
    { 
        var response = client.GetAsync("http://www.google.com");
        Debug.WriteLine("执行到这里1" + response.Result.IsSuccessStatusCode);
        if (response.Result.IsSuccessStatusCode)
        {
            // 通过调用.Result你正在执行同步调用
            Debug.WriteLine("执行到这里2");
            var responseContent = response.Result.Content;
            // 通过调用.Result你正在同步读取结果
            string responseString = responseContent.ReadAsStringAsync().Result;
            //Console.WriteLine(responseString);
        }
        else 
        { 
            Debug.WriteLine("其他情况"); 
        }
    }
}
catch(Exception e)
{
   Debug.WriteLine(e.ToString());
}

0
0 Comments

问题原因:没有正确使用async/await关键字,导致HttpClient异步调用无法正常工作。

解决方法:将代码中的client.GetAsync方法改为await client.GetAsync,并将方法标记为async。同时,将ReadAsStringAsync().Result改为await ReadAsStringAsync(),避免阻塞异步调用。可以阅读一些关于async/await的文章来更好地理解和使用这些关键字。

0
0 Comments

Windows Phone中的HttpClient不工作的原因可能是使用方法不正确或存在网络连接问题。解决方法是使用WebClient类来替代HttpClient类进行网络请求,或者检查网络连接是否正常。

以下是解决方法的代码示例:

try
{
    WebClient wc = new WebClient();
    wc.DownloadStringCompleted += (sender, args) =>
    {
        Debug.WriteLine(args.Results);
    };
    wc.DownloadStringAsync(new Uri(@"http://www.Google.com", UriKind.RelativeOrAbsolute));
}
catch (Exception e)
{
    Debug.WriteLine(e.Message);
}

另外,如果需要关于在Windows Phone中使用HttpClient的教程,请告知。但我已经找到了HttpClient的工作代码:String strResult = await signUpReq.GetStringAsync(finalUri);

0