0

我编写了一个微服务来对 API 进行 HTTP 调用。代码如下所示。
Connector Application

package com.ajay.dashboard.service;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
public class DellDashboardConnectorApplication {

    public static void main(String[] args) {
        SpringApplication.run(DellDashboardConnectorApplication.class, args);
    }

    @Bean
    public RestTemplate getRestTemplate() {

        return new RestTemplate();
    }
}  

Connector COntroller

package com.ajay.dashboard.service.controller;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.http.client.utils.URIBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/*
 * Created by Kulkaa
 */

@RestController
public class DellDashboardController {

    private static final Logger logger = LoggerFactory.getLogger(DellDashboardController.class);

    @CrossOrigin(origins = "http://localhost:8080")
    @RequestMapping(method = RequestMethod.GET, value = "/incident", produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<?> retrieveAllCircles(HttpServletRequest request) throws UnsupportedEncodingException {
        logger.info("DellDashboardController -> retrieveAllIncidents : invoked.");
        RestTemplate restTemplate =new RestTemplate();

        List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>(); 
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        converter.setSupportedMediaTypes(Collections.singletonList(MediaType.ALL));
        messageConverters.add(converter);
        restTemplate.setMessageConverters(messageConverters);


        String formUrl = "api";
        final String sysparm_query = "incident_stateNOT%20IN6%2C7%5Eassignment_group%3D4122c7f8f09cc1002283ac3a043ae3e6";
        final String sysparm_display_value = "true";
        final String sysparm_exclude_reference_link = "true";
        try {
                URIBuilder builder = new URIBuilder(formUrl); 
                builder.addParameter("sysparm_query", sysparm_query); 
                builder.addParameter("sysparm_display_value", sysparm_display_value);
                builder.addParameter("sysparm_exclude_reference_link", sysparm_exclude_reference_link); 
                String actualUrl = builder.toString();
            HttpHeaders headers = new HttpHeaders();
            headers.add("Authorization", "Basic U2VydmljZV9Nb2JpbGVSZXBvcnRpbmc6U2VydmljZV9Nb2JpbGVSZXBvcnRpbmc=");
            headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
            HttpEntity<String> entity = new HttpEntity<String>(headers);
            return restTemplate.exchange(actualUrl, HttpMethod.GET, entity, String.class);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        return retrieveAllCircles(request);

    }

}  

当我使用 构建它时mvn clean install,它运行完美。但是,当我将它作为 SpringBoot 应用程序运行时,出现以下错误:

原因:com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列化java.lang.String[Source: (PushbackInputStream); 处的 START_OBJECT 标记之外的实例;行:1,列:1]

我是否需要使用 POJO 类对其进行反序列化?
被映射的 JSON 格式为:

{
    "result": [{
        data here
    }]
}  

它是一个json对象吗?

4

1 回答 1

0

尝试创建一个空实体。这可能有效

 HttpEntity<String> entity = new HttpEntity<String>(null,headers); 

JSON 内容无效,因此解析器中断。所以这会导致一个空的内容。

于 2019-08-06T06:04:54.213 回答