java - 适用于 Android 的 Spring - 无法提取响应 : no suitable HttpMessageConverter found for response type

标签 java android spring robospice spring-android

我正在尝试使用 Android 的 spring 从 REST 服务检索一些数据。 但是我遇到了问题。我也在使用 Robospice - 因此有一个像这样的方法:

 public FunkyThingsList loadDataFromNetwork() throws Exception {
        String baseURI =context.getResources().getString(R.string.baseWebServiceURI);
                String uri = baseURI + "/FunkyThings/date/" + dateToLookUp.toString("yyyy-MM-dd");
        RestTemplate restTemplate = getRestTemplate();
        final HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
        headers.setAccept( Arrays.asList(MediaType.APPLICATION_JSON));
        HttpAuthentication authHeader = new HttpBasicAuthentication(username, password);
        headers.setAuthorization(authHeader);

        // Create the request body as a MultiValueMap
        MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
        HttpMessageConverter<String> stringConverter = new StringHttpMessageConverter();
        FormHttpMessageConverter formConverter = new FormHttpMessageConverter();
        List<HttpMessageConverter<?>> msgConverters = restTemplate.getMessageConverters();
        msgConverters.add(formConverter);
        msgConverters.add(stringConverter);
        restTemplate.setMessageConverters(msgConverters);

        HttpEntity<?> httpEntity = new HttpEntity<Object>(map, headers);
        final ResponseEntity<FunkyThingsList> responseEntity = restTemplate.exchange(url, HttpMethod.GET, httpEntity,FunkyThingsList.class);

        return responseEntity.getBody();
    }

不幸的是,这不起作用。我抛出以下异常:

org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [com.MyProject.DataClassPojos.RoboSpiceArrayLists.FunkyThingsList] and content type [application/json;charset=utf-8]

现在,根据我的谷歌搜索,我感觉我需要添加一个消息转换器。我只是不确定我需要哪个消息转换器,或者在哪里添加它?

最佳答案

对于默认的 JSON HttpMessageConverter,您需要将 Jackson 1 或 Jackson 2 添加到您的类路径中。

否则,您可以添加一些其他 JSON 库并编写自己的 HttpMessageConverter 来执行反序列化。您将其添加到 RestTemplate 中。您可以使用构造函数或 this method .

关于java - 适用于 Android 的 Spring - 无法提取响应 : no suitable HttpMessageConverter found for response type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25141577/

相关文章:

java - Apache 点燃: Continuous SQLFieldQuery

javafx更改菜单项的默认样式

java - 显示 sparql 查询的结果 "nicely"

java - 当设备处于锁定状态且屏幕处于关闭状态时,如何运行我的应用程序?

java.lang.OutOfMemoryError : Could not allocate JNI Env always android java 错误

Android BroadcastReceiver onReceive() 在 android 4.0 上调用了两次

android - Volley - URL 没有响应

java - 无法使用 Spring Boot 应用程序映射 html 文件

java - Spring代理不包含被代理类的注解

java - 如何在jsp页面中获取像${Some}这样的JSTL标签,但Some不是一个值