获取另一个网站的内容到我的Windows Phone 8应用程序

时间:2014-01-05 19:20:51

标签: c# emulation

我使用httpwebrequest将其他网站的内容导入我的Windows手机应用程序,如下所示。我想获取页面的html,然后解析它以获得我想要的数据。

private void Button_Click(object sender, RoutedEventArgs e)
        {
            System.Uri targetUri = new System.Uri("http://www.contoso.com");
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri);
            request.BeginGetResponse(new AsyncCallback(ReadWebRequestCallback), request); 
        }

        private void ReadWebRequestCallback(IAsyncResult callbackResult)
        {
            HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState;
      HttpWebResponse myResponse=(HttpWebResponse)myRequest.EndGetResponse(callbackResult);// Exception is showing here.

            using (StreamReader httpwebStreamReader = new StreamReader(myResponse.GetResponseStream()))
            {
                string results = httpwebStreamReader.ReadToEnd();
                //TextBlockResults.Text = results; //-- on another thread!
                Dispatcher.BeginInvoke(() => TextBlockResults.Text = results);
            }
            myResponse.Close();
        }

但是收到以下错误:

  

{System.Net.WebException:远程服务器返回错误:   未找到。 ---> System.Net.WebException:远程服务器返回了一个   错误:NotFound。在   System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult的   asyncResult)at   System.Net.Browser.ClientHttpWebRequest<> C_ DisplayClasse.b _d(对象   sendState)at   System.Net.Browser.AsyncHelper<> C_ DisplayClass1.b _0(对象   sendState)---内部异常堆栈跟踪结束--- at   System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback   beginMethod,Object state)at   System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult的   asyncResult)在myApplication.MainPage.RespCallback(IAsyncResult   asynchronousResult)}

可能是什么问题?任何帮助将不胜感激。 感谢。

1 个答案:

答案 0 :(得分:0)

试试这段代码(WebClient):

public void Client(string uri)
{
    var clientToken = new WebClient();
    clientToken.OpenReadCompleted += clientToken_OpenReadCompleted;
    clientToken.OpenReadAsync(new Uri(uri));
}

private void clientToken_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    if (e.Error == null)
    {
       Stream reply = e.Result;
       StreamReader reader = new StreamReader(reply);

       MessageBox.Show(reader.ReadToEnd());
    }
}

或阅读此帖Portable HttpClient for .NET Framework and Windows Phone