com.fasterxml.jackson.core.JsonParseException: Token não reconhecido 'Alarme': estava esperando (JSON Stri

Recentemente, ocorreu um erro na interface remota ao usar httpclient para postagem

Mensagem de erro:

org.springframework.http.converter.HttpMessageNotReadableException: Erro de análise JSON: Token não reconhecido 'Alarm': estava esperando (JSON String, Number, Array, Object ou token 'null', 'true' ou 'false'); exceção aninhada é com.fasterxml.jackson.core.JsonParseException: Token não reconhecido 'Alarm': estava esperando (JSON String, Number, Array, Object ou token 'null', 'true' ou 'false')

Razões e soluções:

O motivo é que o formato do parâmetro da requisição não está correto, não é o formato json padrão, basta converter o parâmetro em uma string json através do objeto JSONObject, ou seja, modificar o código de construção do corpo da mensagem.

Erro de código:

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;
        }
    }

Código modificado:

 

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 depende de:

        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20211205</version>
        </dependency>

Acho que você gosta

Origin blog.csdn.net/weixin_46205984/article/details/128477359
Recomendado
Clasificación