[HttpWebRequest][Method] 請求回應延遲問題

  • 2012
  • 0

摘要:[HttpWebRequest][Method] 請求回應延遲問題

HttpWebRequest 有兩個請求回應的方法

 

1. GetResponse 傳回來自網際網路資源的回應。 (覆寫 WebRequest.GetResponse。)

GetResponse 是同步的方法,也就是會在它呼叫的執行緒上面跑,若在主執行緒上跑,且請求回應的時間一久或出現例外,通常會使得UI看起來像是當機(視窗無回應)的樣子。

2. BeginGetResponse 開始對網際網路資源的非同步要求。 (覆寫 WebRequest.BeginGetResponse(AsyncCallback, Object)。)

BeginGetResponse 是非同步的方法,呼叫這個方法,它會自己額外建立執行緒來跑,然後透過傳入的 AsyncCallBack 方法來處理回應之後的程式碼。

 

上面所提到的只是方法的簡介,但實際要解決的問題是這兩個方法執行後,在執行到真正發送封包的這段時間延遲,問題就在於Default Proxy是開啟的,然而HttpWebRequest連接Default Proxy愈時後,才真正的發送HTTP封包做請求,解決方法我在http://blog.csdn.net/rrrfff/article/details/6170653 找到,

建立App.config檔案,其中裡面文字結構是採用XML 1.0來做描述,在configuration標籤之間加入以下代碼


  <system.net>
    <defaultProxy
        enabled="false"
        useDefaultCredentials="false" >
      <proxy/>
      <bypasslist/>
      <module/>
    </defaultProxy>
  </system.net>

 

如果沒有設置其它的標籤,只有system.net的defailtProxy標籤要更改的話,完整的XML文檔會像下面這樣


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.net>
    <defaultProxy
        enabled="false"
        useDefaultCredentials="false" >
      <proxy/>
      <bypasslist/>
      <module/>
    </defaultProxy>
  </system.net>
</configuration>

 

最後感謝 rrrfff 作者提供的解決方法。