HttpClient发起请求中文数据乱码问题解决
原来部分代码如下:
CloseableHttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost(url);
try {
StringEntity s = new StringEntity(jsonStr);
s.setContentEncoding(“UTF-8”);
s.setContentType(“application/json”);//发送json数据需要设置contentType
post.setEntity(s);
CloseableHttpResponse res = client.execute(post);
修改如下,在初始化StringEntity时指定UTF-8:
CloseableHttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost(url);
try {
StringEntity s = new StringEntity(jsonStr,“UTF-8”);
s.setContentEncoding(“UTF-8”);
s.setContentType(“application/json”);//发送json数据需要设置contentType
post.setEntity(s);
CloseableHttpResponse res = client.execute(post);
借鉴:https://www.cnblogs.com/ligh-test/p/10338124.html
设置入参Json串字符数组问题解决
当在入参格式为json数组时:
[
{
“name”: “zhangsan”,
“age”: 16,
“stuId”: “122342992”,
“hobby”: [
“Run”,
“Sing”
],
}
]
可以看到有两个数组,一个是最外面的[],一个是hobby : [] ,当月你不想用类来嵌套的话可以用List来设置如下:
List<Map<String,Object>> stuInfo = new ArrayList<Map<String,Object>>();
Map<String,Object>> map = new HashMap<String,Object>();
map.put(“name” , “zhangsan”);
map.put(“age” , 16);
String[] hobby = new String[]{“Run”,“Sing”}
map.put(“hobby” : hobby);
stuInfo.add(map);
//设置参数
JSONArray jsonArray = new JSONArray();
for(Map<String, Object> map : stuInfo){
JSONObject bodyObj = new JSONObject(map);
jsonArray.put(bodyObj);
}
StringEntity s = new StringEntity(jsonArray.toString(),“UTF-8”);
s.setContentEncoding(“UTF-8”);
s.setContentType(“application/json”);
本文介绍了使用HttpClient发送请求时遇到的中文乱码问题的解决方案,以及如何处理入参为JSON字符串数组的情况。通过在创建StringEntity时指定UTF-8编码,解决了中文乱码问题。对于JSON数组参数,展示了使用ArrayList、HashMap和JSONArray构造复杂JSON结构的方法。
1074

被折叠的 条评论
为什么被折叠?



