HttpWebRequest請求超時的錯誤

2021-05-23 13:55:51 字數 778 閱讀 3688

從網上抓取點資料,其間要建立兩個httpwebrequest,第乙個請求傳送成功後,將服務端返回的cookie記錄下來給第二個 httpwebrequest使用.**敲完了就執行吧,但請求到20次左右,總是會出現"請求超時"的錯誤,找了n久也沒找到問題在**.

開始,我以為是服務端限制了請求數量,於是,找了些**ip,每個httpwebrequest分配乙個webproxy,但是問題依然存在,於是我把 timeout屬性改到5000ms,然後再catch,在catch中再設定乙個失敗的標識,catch完後如果發現標識為失敗,則繼續傳送請求,直到 請求成功為止,執行了n長時間,還是在20次左右卡住了,程式一直在不停的try,catch,仍然沒有往下繼續的意思.

沒辦法,網上搜了一下,沒找到對應的資料,後來在園子裡乙個朋友不太相關的文章 中找到了答案,一看,似乎以前就碰到過這個問題,唉,記性不好了,還是記下來吧,免得下次碰到又滿世界的去找.

其實沒有什麼大問題,問題就是我第乙個httpwebrequest在getresponse之後,忘記將取得的webresponse.close掉.原來這個close還負責釋放資源啊...

改改**,加了一行**,將webresponse.close掉後,一切恢復正常.

(單執行緒的情況下,關閉掉webresponse就可以了,多執行緒的情況下似乎要設定一下webrequest.servicepoint.connectionlimit屬性)

順便記一下:httpwebrequest有個allowautoredirect,可以設定是否允許服務端redirect,預設為true,特殊情況下需要設定為false.

HttpWebRequest傳送Post資料

其實傳送和get差不多需要額外多注意的是 2 傳送的url串需要自己拼接的,拼接後用ascii來解碼成byte的陣列傳送。偽 如下 string data username admin password 123456 byte bytes encoding.ascii.getbytes data r...

HttpWebRequest使用總結

httpwebrequest的keepalive預設是true,如果使用的時候僅僅只是關閉流,不關閉網絡卡上的通道的話,第二個請求在tcp沒有關閉的情況下是走同乙個通道,此時本機的tcp通道就會拋異常出來,這是本機拋的錯誤。所以除了關閉本機的io資源外,還要關閉網路資源。需要把keepalive設定...

HttpWebRequest程式設計相關問題階段總結

其實我遇到的最大問題是關於cookes的,而cookeis中,jspsessid導致的問題和domain導致的問題最嚴重。所以我就在想是不是apache中的外掛程式導致了jspsessionid的混亂?在asp.net中,當你用到session時,客戶端始終只有乙個sessionid,始終不變。而j...