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 选项..这是工作代码code
String 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.Web.Http.HttpClient.GetStringAsync 总是返回相同的结果
单元测试Windows.Web.Http HttpClient与模拟的IHttpFilter和IHttpContent,MockedHttpFilter抛出System.InvalidCastExce