[J2SE] 在HTTP中保持 Connect: keep-alive
不知道是不是我 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
10/03 22:51, 1F
→
10/03 22:53, , 2F
10/03 22:53, 2F