public class HttpUtils {
private static final Logger log = LoggerFactory.getLogger(HttpUtils.class);
public static String sendGet(String url) {
log.info("请求的url====={}", url);
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpGet httpGet = new HttpGet(url);
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(200000)
.setSocketTimeout(200000).build();
httpGet.setConfig(requestConfig);
CloseableHttpResponse response = httpclient.execute(httpGet);
try {
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
String responseEntityStr = EntityUtils.toString(response.getEntity());
log.info("--返回信息--" + responseEntityStr);
return responseEntityStr;
}
EntityUtils.consume(resEntity);
} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return "";
}
public static String sendPost(String url, Map<String, Object> paramMap) {
log.info("请求的url====={},param==={}", url, JSONObject.toJSONString(paramMap));
CloseableHttpClient httpclient = HttpClients.createDefault();
String responseEntityStr = null;
try {
HttpPost httppost = new HttpPost(url);
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(200000)
.setSocketTimeout(200000).build();
httppost.setConfig(requestConfig);
httppost.setEntity(new StringEntity(JSONObject.toJSONString(paramMap), ContentType.create("application/json", "utf-8")));
CloseableHttpResponse response = httpclient.execute(httppost);
try {
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
responseEntityStr = EntityUtils.toString(response.getEntity());
log.info("--返回信息--" + responseEntityStr);
EntityUtils.consume(resEntity);
return responseEntityStr;
}
} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
return responseEntityStr;
}
}
public static String sendPost(String url, Map<String, Object> paramMap, String token) {
log.info("请求的url====={},param==={}", url, JSONObject.toJSONString(paramMap));
CloseableHttpClient httpclient = HttpClients.createDefault();
String responseEntityStr = null;
try {
HttpPost httppost = new HttpPost(url);
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(200000)
.setSocketTimeout(200000).build();
httppost.setConfig(requestConfig);
httppost.setEntity(new StringEntity(JSONObject.toJSONString(paramMap), ContentType.create("application/json", "utf-8")));
httppost.setHeader("Authorization", "Bearer " + token);
// 执行请求
CloseableHttpResponse response = httpclient.execute(httppost);
try {
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
responseEntityStr = EntityUtils.toString(response.getEntity());
log.info("--返回信息--" + responseEntityStr);
EntityUtils.consume(resEntity);
return responseEntityStr;
}
} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
return responseEntityStr;
}
}
}
public JSONObject updateGarbageBill() {
String token = userService.getToken();
JSONObject result = new JSONObject();
Map<String, Object> paramMap = new HashMap<>();
int size = getReFreeList().size();
paramMap.put("total", size);
paramMap.put("reFeeLists", JSONArray.parseArray(JSON.toJSONString(getReFreeList()))); //列表数据转换为JSON数组
String dataStr = HttpUtils.sendPost(waterUrl + "/water_api/reFee", paramMap, token);
if (StringUtils.isNotEmpty(dataStr)) {
log.info("更新水表用户基本资料响应结果:" + dataStr);
JSONObject object = JSONObject.parseObject(dataStr); //将字符串解析为JSON对象, 便于使用fastjson所给的方法
String code = object.getString("code"); //根据键值获取对应的值
result.put("code", code);
String message = object.getString("message");
result.put("message", message);
JSONArray array = object.getJSONArray("resultDetails"); //根据键值获取JSON数组, 便于遍历
ArrayList<ResultDto> resultDtos = new ArrayList<>();
for (int i = 0; i < array.size(); i++){
ResultDto resultDto = new ResultDto();
JSONObject data = array.getJSONObject(i); //获取JSON对象
resultDto.setMessage(data.getString("message"));
resultDto.setCode(data.getString("code"));
resultDtos.add(resultDto);
}
result.put("resultDetails", resultDtos);
}
return result;
}
报错与解决:
处理办法: 需要先将数组转换为JSONString, 然后转换为JSONArray
传递JSON的数据格式错误