Windows 手机 httpclient 不工作

Posted

技术标签:

【中文标题】Windows 手机 httpclient 不工作【英文标题】:Windows phone httpclient not working 【发布时间】:2014-02-26 17:11:20 【问题描述】:

我有以下代码。异步调用从不返回任何内容。即使是 google.com。

try
            
                using (
                    var client = new HttpClient())  
                var response = client.GetAsync("http://www.google.com");
                Debug.WriteLine("Coming here1"+response.Result.IsSuccessStatusCode);
                if (response.Result.IsSuccessStatusCode)
                
                    // by calling .Result you are performing a synchronous call
                    Debug.WriteLine("Coming here1");
                    var responseContent = response.Result.Content;

                    // by calling .Result you are synchronously reading the result
                    string responseString = responseContent.ReadAsStringAsync().Result;

                    //Console.WriteLine(responseString);
                
                else  Debug.WriteLine("else"); 
            
            
            catch(Exception e)
            
               Debug.WriteLine(e.ToString());
            
        

【问题讨论】:

您没有使用 WebClient 是否有特定原因? 没有具体原因。我听说 httpclient 是新的改进了...我读了这个***.com/questions/14435520/… 并关注了 【参考方案1】:

试试这个

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); 

【讨论】:

当然。如果您遇到任何如何在手机上使用 Httpclient 的教程,请告诉我 但我想到了 HttpClient 选项..这是工作代码codeString strResult = await signUpReq.GetStringAsync(finalUri);code【参考方案2】:

您似乎没有在等待您的异步调用。

尝试将var response = client.GetAsync("http://www.google.com"); 更改为var response = await client.GetAsync("http://www.google.com");

记得将你的方法标记为async

您还阻止了您的异步调用 ReadAsStringAsync().Result。与 client.GetAsync 一样,请确保等待调用而不是使用 Result 阻塞。这个blog post 就这个话题讲了一点。

阅读一点关于 async/await 的内容。一旦你掌握了它,你就会爱上它。

【讨论】:

以上是关于Windows 手机 httpclient 不工作的主要内容,如果未能解决你的问题,请参考以下文章

c# Httpclient 请求在 Windows 10 上工作正常返回 403 在 Windows 7 上被禁止(相同的代码)

Windows Phone 7上的超时httpClient

Windows.Web.Http.HttpClient.GetStringAsync 总是返回相同的结果

单元测试Windows.Web.Http HttpClient与模拟的IHttpFilter和IHttpContent,MockedHttpFilter抛出System.InvalidCastExce

使用HttpClient短信网关接口实现手机号验证码注册

利用httpclient测试手机号码归属地接口(todo)