摘要:[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 作者提供的解決方法。