httpclient 3.0初步研究
最近一直試圖用httpClient做點自動化的工作HttpClient的基本使用因為發(fā)布的代碼中帶有幾個例子,應該算是不難掌握的事情。下面我說下我遇到的幾個問題。
1,登陸驗證圖片問題
首先登錄的時候網(wǎng)站如果不想你對它編程的
2,笨蛋Cookie問題:
如果你要發(fā)送多個cookie,其實可以這樣發(fā)的:








但是截包就會發(fā)現(xiàn),httpclient會在header里構件多
所以如果用httpclient,還想讓cookie正常的話


3,編碼問題:
httpClient處理編碼并不像IE或FireFox那么智能
本來要提交的是form,默認按照application/x
為了彌補httpclient這一點的傻瓜表現(xiàn),我們只好每次都手
postMethod.addRequestHeader("Content-Type","application/x
4,上傳文件問題:
首先是對于文件類型
其次是如果發(fā)送的multiPartPost報文中除了FilePart以外,還需要一些form中的其他input的信息,又是一件很麻煩的事情。剛開始的時候我以為像一般的PostMethod一樣,使用PostMethod.addParameters()就可以了,后來才發(fā)現(xiàn)這個 MultiPartPost跟那個Post根本就是兩個不同的Post。雖然從網(wǎng)頁上看都是Form,且只是在input的類型上 MultiPartPost包含一個file類型的input,其他完全一樣,但實際上在httpClient中是完全不同的兩套方案。對于MultiPartPost而言,不能用addParameters(),而要使用







這種形式。對于要上傳的File,那么這些part就是FilePart對象,如果是跟隨form的其他input,那么這些part就是 StringPart。這樣發(fā)出去的報文才是:Content-Disposition: form-data; name="newFolderName"這種形式。
總結起來,其實也不能怪人家HttpClient,天下間哪有那么多容易做到的事情,尤其是面對Http這樣一個說來不算簡單的協(xié)議。
實際上像這種開源已久的東西,已經(jīng)有了不少的文檔,雖然有時候不太好找,但很多問題還是能夠猜或者試出來,畢竟相對比較成熟,而且遵循這rfc來做的。就像我在水母上問問題,有人說的那樣,世界上有什么能模擬的像IE一樣呢,也不能拿IE的標準要求HttpClient。
我現(xiàn)在的感覺是要想用好HttpClient,或者類似的別的什么工具(其他我就不知道了,有知道類似工具的麻煩告訴我一聲),其實還是要把協(xié)議吃透,這樣一旦遇到什么問題,才知道問題出在哪里,否則就只有郁悶的份兒了。
昨天去Apache的網(wǎng)站,看到一個新的Project叫做HttpComponent從common里邊脫離出來,包含了HttpCore, HttpClient,HttpAsync,HttpNIO,HttpCookie,HttpConn,看不出到底想做成什么樣子,不過HttpCore 4.0 alpha2已經(jīng)發(fā)布了,以后HttpClient用起來可能又有新的變化了。
一周的時間,用的不是很多,有說得不妥的地方,還請大家指正。
posted on 2006-06-15 00:12 I like java 閱讀(735) 評論(5) 編輯 收藏 收藏至365Key 所屬分類: http tool