Httpclient4.0 學習之三: 應用流程

第一:得到登陸的頁面

用Get方法去測試。查看以下結果:

1. 是否得到預期的頁面? 指一些數據, 比如從IE上能顯示的HTML Body這類東東

2. 是否得到Sessions cookie?
一般登陸進去之後, 纔會有這樣的Sessions Cookie, 記得上一講中的Http Response Header嗎, 裏面的Set Cookies, 可能就包含Sessions Cookie。如果此時沒有Set Cookies肯定說明此時Session 沒有建立。 說明你還需要做一步工作,就是"建立Sessions" 等下會講到。
(我引申一下, 即使存在Set Cookie這樣的字段, 一定保證裏面設置的就是Session嗎? 也不一定, 保險的做法是, 按照瀏覽器的習慣, 從主頁, 再到登陸頁面,主頁的目的只是爲了獲取必要的Cookie 不要一步登天, 當然, 我們可以測試一下先, 免得做不必要的登陸主頁,獲取Cookie的操作)
如果, 上面的set cookie你也有了, 請求的URL也確認無誤, 但死活就是得不到預期的登陸界面。很可能就是對方有個字段沒有設置:User-Agent, 這個是指明你採用了哪個客戶端像服務器發送請求, 比如常用的有IE, FF, Chrome,設置主流的流浪器就成!

第二: 建立Session. 這是在第一步失敗的情況下需要的工作。通常的情況是, 從主頁去Get一把, 從而得到Cookie。 下次Login請求的時候,將這些Cookie帶進去。搞定...

HTTPClient提供了一套自動機制幫我們發送Cookie,Cookie Store, 把Response中的Cookie放置其中,並在發送的時候,幫我們發過去(如果沒有發送過去, 檢查Cookie Store是否爲同一個)。
如果依然沒有發送過去, 這個時候就要檢測Cookie Scope, 比如:
A cookie for host "jakarta.apache.org" will not be sent to host "tomcat.apache.org". A cookie for domain ".apache.org" will be sent to both
注意,BT的來了:
A cookie for host "apache.org", without the leading dot, will not be sent to "jakarta.apache.org".
如果還不行...崩潰... 先別看了, 以後再去這裏尋求幫助好了


第三: 分析表單。 這個我覺得沒有必要, 我分析的方式是通過瀏覽器來的。 不想搞那麼複雜。 通過配置文件去靈活轉化,何必搞表單這麼複雜的解析工作?


OK, 我覺得我們可以按照Browser的習慣處理HttpClient的應用:
1. 得到必要的Cookie包括Session id, 這個時候,我們還是用用主頁登陸比較好。
此時如果主頁沒有可用的信息, 則我們只需要處理Response中的Cookie字段就好了。

2. 找到訪問的路徑。 設置必要的參數對, 和必要的url(包括表單項目)
發佈了23 篇原創文章 · 獲贊 0 · 訪問量 5277
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章