作者rps12369 (小董)
看板java
标题[J2SE] 在HTTP中保持 Connect: keep-alive
时间Fri Oct 2 04:21:21 2009
不知道是不是我 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)
1F:推 runtime:以前抓过无名资料 针对无名999 有更简单的方法处理= = 10/03 22:51
2F:→ runtime:无名对於 RSS的程式的连线 是不限的..朝这方向想吧 10/03 22:53