关于post请求中map和json的问题:如下如果将方法参数中JSONObject 换成Map会报错,
public static String post(String url,JSONObject jsonParam,Integer connTimeout,Integer readTimeout) throws Exception {
HttpPost httpPost = new HttpPost(url);
CloseableHttpClient client = HttpClients.createDefault();
StringEntity entity = new StringEntity(jsonParam.toString(),"utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
httpPost.setEntity(entity);
RequestConfig.Builder customReqConf = RequestConfig.custom();
if (connTimeout != null) {
customReqConf.setConnectTimeout(connTimeout);
}
if (readTimeout != null) {
customReqConf.setSocketTimeout(readTimeout);
}
httpPost.setConfig(customReqConf.build());
HttpResponse resp = client.execute(httpPost);
return IOUtils.toString(resp.getEntity().getContent(), "UTF-8");
}
即使使用如下 还是报错(JSON Parse error: Unrecognized token '),最终淘汰掉map直接使用的jsonobject,原因不详???
if (map!= null && !map.isEmpty()) {
List<NameValuePair> formParams = new ArrayList<NameValuePair>();
Set<Map.Entry<String, String>> entrySet = map.entrySet();
for (Map.Entry<String, String> entry : entrySet) {
formParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formParams, Consts.UTF_8);
post.setEntity(entity);
}