2011-06-28 126 views
3

我想送与WP7 HttpWebRequest类的请求,但我没有得到任何回应... 这里是我的代码:如何从WP7中的服务器获取响应?

  InitializeComponent(); 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.google.com/"); 
      HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
      Stream dataStream = response.GetResponseStream(); 
      StreamReader reader = new StreamReader(dataStream); 
      tbResponse.Text = reader.ReadToEnd(); 

      // Cleanup the streams and the response. 
      reader.Close(); 
      dataStream.Close(); 
      response.Close(); 
      Console.ReadLine(); 

此外,我使用这个扩展:click here,但我在Windows控制台应用程序上测试过,并没有任何问题,所以我认为问题在于我不了解WP7。

+6

不要mak e同步请求;他们冻结了用户界面。 'GetResponse()'不存在的原因。 – SLaks

+0

另请参见[检索结果时,WP7上的DownloadStringTaskAsync挂起](http://stackoverflow.com/questions/6448819/downloadstringtaskasync-on-wp7-hangs-when-retrieving-result) –

回答

6

您需要进行异步请求是这样的:

var webRequest = (HttpWebRequest)HttpWebRequest.Create(Url); 
webRequest.BeginGetResponse(new AsyncCallback(request_CallBack), webRequest); 

和响应处理:

void request_CallBack(IAsyncResult result) 
{ 
     var webRequest = result.AsyncState as HttpWebRequest; 
     var response = (HttpWebResponse)WebRequest.EndGetResponse(result); 
     var baseStream = response.GetResponseStream(); 

      // if you want to read binary response 
      using (var reader = new BinaryReader(baseStream)) 
      { 
       DataBytes = reader.ReadBytes((int)baseStream.Length); 
      } 

      // if you want to read string response 
      using (var reader = new StreamReader(baseStream)) 
      { 
       Result = reader.ReadToEnd(); 
      } 
} 

这是我用来处理我的web请求一个辅助类需要的Windows Phone的开发过程中7个应用程序:

http://www.manorey.net/mohblog/?p=17&preview=true

相关问题