解决HttpClient的PostMethod的中文乱码问题
问题场景:
解决代码:
请求时设定编码格式:
post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");
完整代码:
/**
* 封装请求参数,并发送请求
*
* @param record
* @return
*/
public String sendPost(Record record) {
try {
HttpClient httpclient = new HttpClient();
PostMethod post = new PostMethod(record.getStr("url"));
//解决中文乱码问题
post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");
// 设置调用接口的参数信息
post.addParameter("servercode", record.getStr("serverCode"));
post.addParameter("time", record.getStr("time"));
post.addParameter("sign", record.getStr("sign"));
post.addParameter("srcnum", record.getStr("srcnum"));
post.addParameter("desttype", record.getStr("desttype"));
post.addParameter("dest", record.getStr("dest"));
post.addParameter("message", record.getStr("message"));
post.addParameter("messageid", record.getStr("messageid"));
post.addParameter("method", "send");
httpclient.executeMethod(post);
String result = new String(post.getResponseBody(), "utf-8");
logger.info("服务端返回结果:" + result);
return result;
}
catch (Exception e) {
e.printStackTrace();
logger.info("发送请求异常信息:" + e.getMessage() + "=======");
return "-1";
}
}