最近在使用httpclient进行post时远程接口发生报错
报错信息:
org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token 'Alarm': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'Alarm': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
原因及解决方法:
原因是请求参数格式不正确,不是标准的json格式,通过JSONObject对象把参数转为json字符串即可,即修改消息体构造代码。
报错代码:
public HttpEntity httpPost(String url, Alarm data){
try{
CloseableHttpClient httpClient = HttpClients.createDefault();
// 创建httpPost实例
HttpPost post = new HttpPost(url);
//构造消息头
post.setHeader("Content-type", "application/json; charset=utf-8");
// 构造消息体
StringEntity entity = new StringEntity(data.toString(), ContentType.create("application/json", "utf-8"));
post.setEntity(entity);
CloseableHttpResponse response = httpClient.execute(post);
HttpEntity responseEntity = response.getEntity();
int statusCode = response.getStatusLine().getStatusCode();
//最后关闭HttpClient资源.
httpClient.close();
return responseEntity;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
修改后的代码:
文章来源:https://www.toymoban.com/news/detail-601395.html
public HttpEntity httpPost(String url, Alarm data){
try{
CloseableHttpClient httpClient = HttpClients.createDefault();
// 创建httpPost实例
HttpPost post = new HttpPost(url);
//构造消息头
post.setHeader("Content-type", "application/json; charset=utf-8");
// 构造消息体
StringEntity entity = new StringEntity(new JSONObject(data).toString(), ContentType.create("application/json", "utf-8"));
post.setEntity(entity);
CloseableHttpResponse response = httpClient.execute(post);
HttpEntity responseEntity = response.getEntity();
int statusCode = response.getStatusLine().getStatusCode();
//最后关闭HttpClient资源.
httpClient.close();
return responseEntity;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
JSONObject依赖:文章来源地址https://www.toymoban.com/news/detail-601395.html
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20211205</version>
</dependency>
到了这里,关于com.fasterxml.jackson.core.JsonParseException: Unrecognized token ‘Alarm‘: was expecting (JSON Stri的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!