httpclient3 1使用小結

2021-09-02 20:59:33 字數 2262 閱讀 7435

jakarta的httpclient3.1是最新版本,專案中需要用程式模擬瀏覽器的get和post動作。在使用過程中遇到不少問題。

1. 帶附件的post提交

最開始都是使用multipartpostmethod這個類,現在已經廢棄這個類了。api說明:deprecated. use multipartrequestentity in conjunction with postmethod instead. 使用postmethod可以實現的功能,就沒有必要再弄乙個multipartpostmethod了。下面是一段最簡單的示例:

這是針對一般的form形式的提交,而且這個form裡面不帶附件的。如果帶附件,那麼這種方法就不起作用,附件上傳的引數和普通引數無法一同在伺服器獲取到。org.apache.commons.httpclient.methods.multipart 這個包就是為處理檔案上傳這種多形式引數的情況的。最主要的類是part(代表一種post object),它有二個比較重要的子類:filepart和stringpart,乙個是檔案的引數,另乙個就是普通的文字引數。它的典型使用方法如下:

//執行postmethod

2. 引數中文的處理問題

httpclient的預設編碼都是iso-8859-1,那肯定就無法支援中文引數了。引用一下這篇文章: ,按照作者的說法,就可以正常解決中文編碼的問題。其中最關鍵的是修改encodingutil這個類的乙個方法實現。另外,filepart和stringpart的構造方法都有乙個帶編碼指定的引數,為了減少問題的出現,建議所有的都帶上統一的編碼,包括postmethod.getparams()。示例如下:

//執行postmethod

httpclient3 1下的請求頭和params

才開始使用這個東東,最開始以為在httpmethod的params中set乙個key和value,在client execute的時候就自動轉化成請求的header的。經過debug發現不是這個樣子,只有agent和host 這2個在params中設定的變數才作為請求頭髮過去的。其實host是htt...

httpclient3 1中的兩個關鍵方法

在httpmethodbase類中,關鍵方法1 public int execute httpstate state,httpconnection conn 關鍵方法2 protected void readresponse httpstate state,httpconnection conn p...

初步使用HttpClient

剛剛使用httpclient想稍微的總結一下。發現引入最新版本4.5,defaulthttpclient等老版本常用的類已經過時了,不推薦使用了 去官網看了一下在4.3之後就拋棄了。官方推薦使用 defaulthttpclient closeablehttpclient 使用get請求方式,post...