HttpClient Post/GetMethod 轉碼方案彙總

HttpClient Post  方式模擬請求時常會遇到中文轉碼問題,這裏我總結一下本身遇到的幾種狀況和解決方案。html

一、請求網頁java

GetMethod getMethod = new GetMethod("http://www.baidu.com");  
//(1)、這裏能夠設置本身想要的編碼格式
getMethod.getParams().setContentCharset("GB2312"); 

//(2)、對於get方法也能夠這樣設置 
getMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"GB2312");  

//(3)、還能夠以下這樣設置
getMethod.addRequestHeader("Content-Type", "text/html; charset=UTF-8");  
 
//(4)、固然一樣能夠直接設置 httpClient 對象的編碼格式
HttpClient httpClient = new HttpClient();
httpClient.getParams().setContentCharset("GB2312");

//使用流的方式讀取也能夠以下設置
InputStream in = getMethod.getResponseBodyAsStream();  
//這裏的編碼規則要與上面的相對應  
BufferedReader br = new BufferedReader(new InputStreamReader(in,"GB2312"));

二、請求方法ide

PostMethod PostMethod= new PostMethod("http://localhost:8080/ezid-cert-mobile/upload");
//(1)、一般能夠以下設置本身想要的編碼格式
postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"utf-8");

//(2)、也重載PostMethod的getRequestCharSet()方法
public  class UTF8PostMethod extends PostMethod{
    public UTF8PostMethod(String url){
        super(url);
    }
    @Override
    public String getRequestCharSet() {
     return "UTF-8";
    }
}

//(3)、若是是方法的參數出現亂碼問題,那麼你能夠以下設置參數
Charset utf8Charset = Charset.forName("UTF-8");
multipartContent.addPart("name", new StringBody(Info.getUserEntity().getName(), utf8Charset));

//(4)、若是你用的是Part [] parts={...}傳參方式的話能夠以下設置
StringPart name=new StringPart("name",certFormEntity.getPersonName(), "UTF-8");
相關文章
相關標籤/搜索