org.apache.commons.httpclient.HttpClient hc = new
????? org.apache.commons.httpclient.HttpClient();
? hc.getHostConfiguration().setHost("localhost", 80);
? org.apache.commons.httpclient.methods.MultipartPostMethod mpm = new
????? org.apache.commons.httpclient.methods.MultipartPostMethod("/upload.asp");
? mpm.addParameter("username", "username");
? mpm.addParameter("file1", "文件名.txt", new java.io.File("c://boot.ini"));
? mpm.addParameter("file2", "再來一個文件.txt", new java.io.File("c://boot.ini"));
? hc.executeMethod(mpm);
? System.out.println(mpm.getResponseBodyAsString());
org.apache.commons.httpclient.HttpClient hc = new
????? org.apache.commons.httpclient.HttpClient();
? hc.getHostConfiguration().setHost("localhost", 80);
? org.apache.commons.httpclient.methods.MultipartPostMethod mpm = new
????? org.apache.commons.httpclient.methods.MultipartPostMethod("/upload.asp");
? mpm.addParameter("username", "username");
? mpm.addParameter("file1", "文件名.txt", new java.io.File("c://boot.ini"));
? mpm.addParameter("file2", "再來一個文件.txt", new java.io.File("c://boot.ini"));
? hc.executeMethod(mpm);
? System.out.println(mpm.getResponseBodyAsString());




















































針對采用HttpClient 文件上傳 的其實和一般上傳一樣,將文件以流的形式作為請求的信息RequestBody 體即可
必須注意中文問題:
關于httpclient上傳文件是中文名稱的處理
在一個項目中,上傳文件采用httpclient來post文件,在測試中發現如果文件是中文名稱,上傳的文件是亂碼
經過跟蹤發現,原來在httpclient中進行了編碼,為ASCII,所以為亂碼
org\apache\commons\httpclient\util包下EncodingUtil.Java
/**
*ConvertsthespecifiedstringtobytearrayofASCIIcharacters.
*
*@paramdatathestringtobeencoded
*@returnThestringasabytearray.
*
*@since3.0
*/
publicstaticbyte[]getAsciiBytes(finalStringdata){
if(data==null){
thrownewIllegalArgumentException("Parametermaynotbenull");
}
http://www.mscto.com
?
try{
returndata.getBytes("US-ASCII");
}catch(UnsupportedEncodingExceptione){
thrownewHttpClientError("HttpClientrequiresASCIIsupport");
}
}
解決方法:
1在接收端處理ascii數據
2重新編譯httpclient包,即更改上面的方法,改為iso8859-1或utf-8
這樣可以解決中文的問題
采用httpclient是一個很好的方法,可以給你其他的系統post數據,好像Delphi中的indy控件,
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
