httpclient post數據時,中文亂碼問題



package com.baby.httpclient;

import java.io.IOException;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

public class TestHttpClientPost {

HttpClient httpClient = new HttpClient();
String catId = "32";

public void post() throws HttpException, IOException{


String url = "http://localhost/phpcms/admin.php?mod=phpcms&file=content&action=add&catid=" + catId +"&modelid=1";
// httpClient.getHostConfiguration().setHost("localhost", 80, "http");


PostMethod postMethod = new UTF8PostMethod(url);
postMethod.setRequestHeader("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
postMethod.setRequestHeader("connection", "Keep-Alive");
postMethod.setRequestHeader("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4");
postMethod.setRequestHeader("Accept-Language", "zh-cn,zh;q=0.5");
postMethod.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=gbk");
postMethod.setRequestHeader("Cookie", "guestbook=3; uuid=3E7AFDB3DAC6AF5601A9969B2C78441EACC2B5C5E2E5B301; PHPSESSID=dee161c5bb102a2f7b0137141ee53d9f; EUrIWifQukusername=phpcms; EUrIWifQukauth=AT8HVwFWAQMOAAUGWlcHWFAEWlYAUFBTAFRQB1dSAFYFUg%3D%3D; EUrIWifQukcookietime=0");

String aaa = "info[catid]=[分類ID]&info[title]=[標籤:標題]&info[keywords]=[標籤:標題]&info[author]=[標籤:作者]" +
"&info[copyfrom]=[標籤:來源]&add_introduce=1&introcude_length=200&auto_thumb=1" +
"&auto_thumb_no=1&info[content]=[標籤:內容]&info[paginationtype]=0&info[maxcharperpage]=10000" +
"&status=99&info[inputtime]=[標籤:時間]&info[posids]=-99]&info[posids][]=1&info[posids][]=2&info[posids][]=3&info[posids][]=4&info[posids][]=5" +
"&info[groupids_view]=-99&info[template]=show&dosubmit=1";
NameValuePair[] data = {
//發佈的欄目的分類id號
new NameValuePair("info[catid]",catId),
new NameValuePair("info[title]","中國足協官員被警方帶走 昔日所在隊曾惹賭球醜聞---"),
new NameValuePair("info[keywords]","足協官員 警方 賭球 醜聞"),
new NameValuePair("info[author]","sina"),
//文章來源
new NameValuePair("info[copyfrom]","新浪網"),
//是否截取內容前面的X個字到摘要(也就是description)裏面,1表示截取,0表示不截取
new NameValuePair("add_introduce","1"),
//截取的漢字長度,這裏是200個漢字
new NameValuePair("introcude_length","200"),
//是否獲取內容的第X張圖片作爲標題圖片,也就是生成一張縮略圖,1表示生成縮略圖,0表示不生成縮略圖
new NameValuePair("auto_thumb","1"),
//指定內容裏面的那一張圖片,產生縮略圖,這裏指定的是第一張
new NameValuePair("auto_thumb_no","1"),

new NameValuePair("info[content]","<center><img alt=中國足協官員被警方帶走昔日所在隊曾惹賭球醜聞 src=http://i1.sinaimg.cn/ty/j/2009-11-06/U2463P6T12D4683237F44DT20091106093751.jpg border=1 ><br><img src=http://i0.sinaimg.cn/home/c.gif height=5 width=1 style=\"border:none;\"><br>範廣鳴曾頒發中超獎盃 圖片來源:體壇週報 <br><br></center>" +
"<p>  被遼寧警方“協助調查”的隊伍中,已經赫然出現了現中國足協官員的身影。此人是在足協負責商務工作的範廣鳴,在中超聯賽尾聲時,經常由他將冠軍獎盃交給奪冠俱樂部。</p>" +
"<p>  範廣鳴這次之所以被查,不是因爲他在足協的工作,而是因爲他與地方俱樂部的一些複雜關係。範廣鳴在江湖人脈很旺,曾多次組織中國球隊前往新加坡參加聯賽,當年的新麒隊、遼寧廣原隊就是他運作赴新加坡的,他還曾任新麒隊總經理。後來,這幾支球隊都在新加坡惹上賭球醜聞。遼寧廣原領隊王鑫在新加坡被判賭球有罪回到中國,在這次掃賭行動中被帶走接受調查。而範廣鳴因爲與這兩隊的淵源,這次也未能倖免,近日在武漢被警方帶走。</p>"),
//是否分頁,正常不分頁,0表示不分頁,1表示分頁
new NameValuePair("info[paginationtype]","0"),
//要是分頁的話,內容裏多少個字符開始分第二頁
new NameValuePair("info[maxcharperpage]","10000"),
//99表示文章的狀態時發佈的
new NameValuePair("status","99"),
//發佈時間
new NameValuePair("info[inputtime]","2009-11-24 12:53"),
//文章推薦位,-99表示全選,但基本沒用,還是由下面的來控制
new NameValuePair("info[posids]","-99"),
//1:首頁推薦 2:首頁焦點 3:首頁頭條 4:列表頁推薦 5:內容頁推薦
new NameValuePair("info[posids][]","1"),
new NameValuePair("info[posids][]","2"),
new NameValuePair("info[posids][]","3"),
new NameValuePair("info[posids][]","4"),
new NameValuePair("info[posids][]","5"),
//文章閱讀權限,-99表示全選
new NameValuePair("info[groupids_view]","-99"),
//內容頁的模板
new NameValuePair("info[template]","show"),
//提交狀態
new NameValuePair("dosubmit","1")
};

postMethod.setRequestBody(data);
int statusCode = httpClient.executeMethod(postMethod);
System.out.println(statusCode);
//讀取內容
byte[] responseBody = postMethod.getResponseBody();
//處理內容
System.out.println(new String(responseBody,"UTF-8"));
// System.out.println(new String(postMethod.getResponseBodyAsString().getBytes("ISO-8859-1"),"GB2312"));

}


public static void main(String[] args) throws HttpException, IOException {
TestHttpClientPost t = new TestHttpClientPost();
t.post();
}



//Inner class for UTF-8 support
public static class UTF8PostMethod extends PostMethod{
public UTF8PostMethod(String url){
super(url);
}
@Override
public String getRequestCharSet() {
//return super.getRequestCharSet();
return "gbk";
}
}


}


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