HTTP Client 編寫

手頭生正好有一個HTTP Client例子,使用socket 連接。代碼如下:

運行上述代碼,返回如下:

IP Address is : 211.100.26.77
HTTP/1.1 302 Moved Temporarily
Server: nginx/0.7.65
Date: Fri, 02 Jul 2010 14:27:19 GMT
Content-Type: text/html
Content-Length: 161
Connection: keep-alive
Location: http://www.csdn.net/

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx/0.7.65</center>
</body>
</html>

 

這個代碼基本上是一個最原始的http clinet,模擬了http協議,比如協議頭。但是這段代碼有幾個問題:

首先不能解析動態網頁,如aspx等(不知道爲什麼,請知道的朋友告知,謝謝!)。

其次,服務器返回的是一個二進制byte[],你需要自己解析得到的你需要的內容。

因爲我需要拿到的是一個二進制的png圖片文件,並不關心頭信息,如果能有一個library直接提供解析功能就好了。

 

Apache common HttpClient 庫提供了很好的封裝,因此非常簡單的幾行代碼(不及異常處理)就可以了。

但是這個代碼有時會給出如下警告:

Jul 2, 2010 11:42:34 AM org.apache.commons.httpclient.HttpMethodBase getResponseBody
WARNING: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.

 

按照提示應該使用getResponseBodyAsStream。其中最後還有一個將byte[]生成圖片並顯示,並且判斷圖片大小後,重新設置圖片大小的。下面是我的完整實例:

參考:

http://hc.apache.org/httpclient-3.x/tutorial.html

http://hc.apache.org/httpclient-3.x/apidocs/index.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章