在本项目中调用外部接口(传递json数据,返回json数据)方法HttpClient解决一些小问题
/*
*date 传递的json数据
*port 接口地址
*return 返回的json数据
*/
public static JSONObject doPost(JSONObject date, String port) {
HttpClient client = HttpClients.createDefault();
// 要调用的接口方法
String url = port;
HttpPost post = new HttpPost(url);
JSONObject jsonObject = null;
try {
StringEntity s = new StringEntity(date.toString(), "utf-8");//此处为解决传输来的数据变成乱码的问题
s.setContentEncoding("UTF-8");
s.setContentType("application/json");
post.addHeader("content-type", "text/xml;charset:utf-8");
post.setEntity(s);
HttpResponse res = client.execute(post);
if (res.getStatusLine().getStatusCode() == HttpStatus.OK.value()) {//此处判断状态是否为200
String result = EntityUtils.toString(res.getEntity());
jsonObject = JSONObject.parseObject(result);// 返回json格式:
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return jsonObject;
}
问题:
1.在其他博客中有如下代码
StringEntity s = new StringEntity(date.toString());
使用后debug发现传输过去的中文总是???形式传递,随修改为
StringEntity s = new StringEntity(date.toString(), "utf-8");
成功解决
if (res.getStatusLine().getStatusCode() == HttpStatus.OK.value())
HttpStatus.OK.value()=200;