2012-12-22 24 views
0

我有一些問題,我的WebRequest ...的WebRequest的GetResponse無效鏈接程序掛起

時,我有一個無效的網址,我的程序掛起:/ 我認爲它是與GetResponse,並在互聯網上閱讀我必須使用BeginGetResponse(異步)?

我嘗試了各種代碼異步,但沒有工作...

我有什麼(無效網址掛起):

  WebRequest request; 
      request = WebRequest.Create(url); 

      WebResponse webResponse = request.GetResponse(); 

      Stream ReceiveStream = webResponse.GetResponseStream(); 
      Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); 
      StreamReader readStream = new StreamReader(ReceiveStream, encode); 


      reader = new XmlTextReader(readStream); 
      String[] login = new String[1]; 


      reader.Read(); 
      reader.ReadStartElement("response"); 

      reader.ReadStartElement("item"); 
      login[0] = reader.ReadString(); 


      reader.ReadEndElement(); 
      reader.ReadEndElement(); 

      reader.Close(); 

我的嘗試:

private HttpWebResponse response; 
    private void FinishWebRequest(IAsyncResult result) 
    { 
     response = (result.AsyncState as HttpWebRequest).EndGetResponse(result) as  HttpWebResponse; 
    } 

    public void Read() 
    { 

      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
      request.BeginGetResponse(new AsyncCallback(FinishWebRequest), request); 

      Stream ReceiveStream = response.GetResponseStream(); 
      Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); 
      StreamReader readStream = new StreamReader(ReceiveStream, encode); 


      reader = new XmlTextReader(readStream); 

但是在這裏我得到了一個InvalidOperation異常(即使有一個有效/已存在的url)。 我沒有看到/得到它。

回答

0

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetrequeststream.aspx

你忘了一步,你也可以請求對象

總體思路是你搶請求流上設置超時,將您的請求「串」成二進制,並喂到流。

然後,您的響應回調觸發了您再次抓取流並將其轉換回字符串的位置。

本示例中的postData是您在發佈請求中發送給服務器的內容。

+0

試圖執行:/不工作。我必須將StreamReader(鏈接)放在後面的「讀者」?此外,我不明白postData ... – keno

+0

首先,你需要知道你是否做http post或get? –

+0

感謝您的回覆。我做了一個http帖子! :-) – keno