Windows手机获取服务器源代码

我正在尝试获取网站的源代码。 在Windows应用程序中,一个简单的http请求就足够了。 然而在Windows手机中,它要复杂得多。 我search了很多谷歌,并没有明确的答案来。 这是我所尝试的,但没有大的成功。

public static sReturn = ""; private string _InetGetSourceCode(string sUrl) { _InetReadEx(sUrl); return sReturn; } private void _InetReadEx(string sUrl) { WebClient client = new WebClient(); client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCallback2); client.DownloadStringAsync(new Uri(sUrl)); } private static void DownloadStringCallback2(Object sender,DownloadStringCompletedEventArgs e) { if (!e.Cancelled && e.Error == null) { sReturn = e.Result; } } 

我在这里做错了什么?

Solutions Collecting From Web of "Windows手机获取服务器源代码"

问题是,你立即返回sReturn ,但下载将不会完成,直到将来的一段时间。 所以sReturn仍然有空字符串的默认值。

您可以下载这个示例 ,其中包含使用HttpClient便携式库完成您想要做的代码。

我终于找到了我的问题的正确答案:非常感谢@Peter托尔 – MSFT的帮助引导我到我的问题的确切答案

回答

  public static sReturn = ""; public async Task _InetReadEx(string sUrl) { try { HttpClient httpClient = new HttpClient(); HttpResponseMessage response = await httpClient.GetAsync(new Uri(sUrl)); response.EnsureSuccessStatusCode(); //sStatus = response.StatusCode + " " + response.ReasonPhrase + Environment.NewLine; sSource = await response.Content.ReadAsStringAsync(); sSource = sSource.Replace("<br>", Environment.NewLine); // Insert new lines } catch (Exception hre) { sSource = string.Empty; } } 

和调用它的方式:

  public MainPage() { InitializeComponent(); Task.Run(async () => { await _InetReadEx("http://url.com/"); }).Wait(); } 

非常感谢大家和社区!