Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.springframework.web.client.RestClientException:无法提取响应:_Java_Json_Spring_Rest_Resttemplate - Fatal编程技术网

Java org.springframework.web.client.RestClientException:无法提取响应:

Java org.springframework.web.client.RestClientException:无法提取响应:,java,json,spring,rest,resttemplate,Java,Json,Spring,Rest,Resttemplate,我正在创建一个restful API,它将使用来自服务器的json。但我得到了以下例外: org.springframework.web.client.RestClientException:无法提取响应:未找到响应类型[[Lexamples.dto.DummyDTO;]和内容类型[text/json;charset=utf-8]的合适HttpMessageConverter 位于org.springframework.web.client.HttpMessageConverterExtract

我正在创建一个restful API,它将使用来自服务器的json。但我得到了以下例外:

org.springframework.web.client.RestClientException:无法提取响应:未找到响应类型[[Lexamples.dto.DummyDTO;]和内容类型[text/json;charset=utf-8]的合适HttpMessageConverter 位于org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:84) 位于org.springframework.web.client.restemplate.doExecute(restemplate.java:454) 位于org.springframework.web.client.restemplate.execute(restemplate.java:409) 位于org.springframework.web.client.restemplate.getForObject(restemplate.java:207) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中 位于java.lang.reflect.Method.invoke(Method.java:597) 位于org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSite.invoke(PojoMetaMethodSite.java:189) 位于org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53) 位于org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) 位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)

代码段:

List<HttpMessageConverter<?>> msgConverters = restTemplate.getMessageConverters();
msgConverters.add(new MappingJacksonHttpMessageConverter());
restTemplate.setMessageConverters(msgConverters);
DummyDTO[] dummy= restTemplate.getForObject(URI, DummyDTO[].class);
List entity=新的HttpEntity(标题);
//添加Jackson消息转换器

List看起来像是您更改了请求的内容类型,但“application/json”必须在响应头中,而且您仍然有相同的异常,这表明您在响应中有错误的媒体类型“text/json”,没有这种类型。只需看一下
restemplate.exchange(“http://server.com",HttpMethod.GET,实体,UserDTO[].class);
应该有问题。

尝试返回类型为application/json,而不是text/json,并提供控制器代码。@rishman要将内容类型更改为application/json,我对现有方法进行了更改。仍然收到相同的错误。我编辑了帖子以包含控制器代码。是的,问题是响应类型。一旦我更改了将其添加到application/json,一切正常!谢谢!
public UserDTO[] getUserList(){
             List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
           acceptableMediaTypes.add(MediaType.APPLICATION_JSON);

        // Set the Accept and Content type header
            HttpHeaders headers = new HttpHeaders();
           headers.setContentType(MediaType.APPLICATION_JSON);
            headers.setAccept(acceptableMediaTypes);
            HttpEntity<?> entity = new HttpEntity<Object>(headers);

            // Add the Jackson message converter
            List<HttpMessageConverter<?>> msgConverters = restTemplate.getMessageConverters();
            msgConverters.add(new MappingJacksonHttpMessageConverter());
            restTemplate.setMessageConverters(msgConverters);

            // Make the HTTP GET request, marshalling the response from JSON to an array of Users
            ResponseEntity<UserDTO[]> responseEntity  =   restTemplate.exchange("http://server.com",HttpMethod.GET, entity, UserDTO[].class);
            return responseEntity.getBody();
        }