[J2SE] 在HTTP中保持 Connect: keep-alive

看板java作者 (小董)時間15年前 (2009/10/02 04:21), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/1
不知道是不是我 Code 的問題 我在對YAHOO傳送 requset 的時候 每個 Connection 都會被 close 例如我要擷取很多頁面的HTML 若重新連太多個 Connection 就會有 ERROR 999 的問題 我嘗試用了 WretchXD 這個抓圖軟體 (它有解決 ERROR 999 的問題) 去觀察它的封包 它都有讓 Connection keep-alive 但我寫的程式就會被 close 不知道這該怎麼解決? 亦或不是 HTTP Connection 的問題? 或許有一部分不是JAVA programming的問題 或不適合發文很抱歉 我的Code 這段 Code 會在一個迴圈中 不斷擷取頁面 ↓ URL page = new URL(ptr_Page.getURL()); //ptr_Page.getURL() 是我自定義的 URLConnection page_C = page.openConnection(); page_C.addRequestProperty("Referer","http://tw.yahoo.com/"); // referer page_C.addRequestProperty("User-Agent","Mozilla/4.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5;Wretch16037)"); page_C.addRequestProperty("Cache-Control","no-cache"); page_C.addRequestProperty("Keep-Alive","300"); page_C.addRequestProperty("Connection","keep-alive"); page_C.addRequestProperty("Cookie",cookie); cookie_temp = page_C.getHeaderField("Set-Cookie"); if(cookie_temp!=null) // 確認有 GET Cookie { cookie = cookie_temp; } ..... ....... ...........(後續處理) 觀察封包狀況 ─ WretchXD 的情形 (可正常不停的下載file) request: ↓無名帳號 GET /album/xxxxxx HTTP/1.1 Referer: http://www.wretch.cc/ User-Agent: Mozilla/4.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5;Wretch16037) Connection: Keep-Alive Cache-Control: no-cache Cookie: thumbtype=0; quality=1; showall=1; lang=zh-tw; a_uid=dreamer119; a_page=4; BX=djf48e8k11akl&b=3&s=51 Host: www.wretch.cc respond: HTTP/1.1 200 OK Date: Thu, 01 Oct 2009 18:56:45 GMT P3P: policyref="http://info.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC GOV" Set-Cookie: PHPSESSID=hrvh1rslvhirjsgkdkp7ce2jk7; path=/; domain=.wretch.cc Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Set-Cookie: a_page=1; expires=Fri, 02-Oct-2009 18:56:45 GMT; path=/; domain=.wretch.cc Vary: Accept-Encoding Content-Type: text/html; charset=utf-8 Age: 0 Transfer-Encoding: chunked Connection: keep-alive Via: HTTP/1.1 r4.ycpi.tp2.yahoo.net (YahooTrafficServer/1.17.20 [cMsSf ]) Server: YTS/1.17.20 觀察封包狀況 ─ 我自己的程式的情形 (連結一個頁面到達一定的次數就會ERROR 999) request: ↓連結的網址 GET xxxxxx HTTP/1.1 Referer: http://tw.yahoo.com/ User-Agent: Mozilla/4.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5;Wretch16037) Cache-Control: no-cache Keep-Alive: 300 Connection: keep-alive Cookie: B=49an3ql5ca1ue&b=3&s=2f; expires=Tue, 02-Jun-2037 20:00:00 GMT; path=/; domain=.yahoo.com Host: tw.page.bid.yahoo.com Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 respond: HTTP/1.1 200 OK P3P: policyref="http://p3p.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV" Expires: Thu, 01 Jan 1970 12:34:56 GMT Cache-Control: no-store, no-cache, must-revalidate, private Cache-Control: post-check=0, pre-check=0 Pragma: no-cache Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=big5 ※ 編輯: rps12369 來自: 114.36.113.22 (10/02 04:23)

10/03 22:51, , 1F
以前抓過無名資料 針對無名999 有更簡單的方法處理= =
10/03 22:51, 1F

10/03 22:53, , 2F
無名對於 RSS的程式的連線 是不限的..朝這方向想吧
10/03 22:53, 2F
文章代碼(AID): #1AnGz6NC (java)