Spring:没有合适的消息转换器

时间:2013-02-22 00:10:24

标签: android json spring jackson

我正在尝试使用Spring进行GET http请求。

我的主要课程:

    final String url = getString(R.string.myurl);

        // Populate the HTTP Basic Authentitcation header with the username and password
        String Usn = "username";
        String ww = "password";

        HttpAuthentication authHeader = new HttpBasicAuthentication(Usn, ww);
        HttpHeaders requestHeaders = new HttpHeaders();
        requestHeaders.setAuthorization(authHeader);
        requestHeaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));

        System.out.println("Headers: " + requestHeaders.toString());

        // Create a new RestTemplate instance
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());


        try {
            // Make the network request
            Log.d(TAG, url);
            ResponseEntity<CatMessage> response = restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<Object>(requestHeaders), CatMessage.class);
            System.out.println(response.toString());
        } catch (HttpClientErrorException e) {
            Log.e(TAG, e.getLocalizedMessage(), e);
        }
    }

使用CatMessage类:

public class CatMessage {

    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public int getCode() {
        return code;
    }
    public void setCode(int code) {
        this.code = code;
    }

    public String message;
    public int code;

}

我应该得到什么,因为我使用的不是用户名和密码组合(这个服务器部分工作正常),是:

  

{

"message": "You are not authorized to use this service",
"code": 5201
     

}

我认为这应该有用,因为我几乎在复制基本的身份验证project of Spring for Android

但是发生了什么是解析的问题(我认为)。当然我已经包含了Jackson和Spring的依赖关系,所以我不希望我的问题出现在那里。但我希望有一个非常小的JSON,有一个良好的映射模型(CatMessage)并包含我的杰克逊文件所以我认为这应该工作...但我得到以下错误:

  

02-22 00:13:42.977:E / AndroidRuntime(2052):引起:   org.springframework.web.client.RestClientException:无法解压缩   响应:没有为响应类型找到合适的HttpMessageConverter   [org.springframework.android.basicauth.CatMessage]和内容类型   [text / html] 02-22 00:13:42.977:E / AndroidRuntime(2052):at   org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:79)   02-22 00:13:42.977:E / AndroidRuntime(2052):at   org.springframework.web.client.RestTemplate $ ResponseEntityResponseExtractor.extractData(RestTemplate.java:655)   02-22 00:13:42.977:E / AndroidRuntime(2052):at   org.springframework.web.client.RestTemplate $ ResponseEntityResponseExtractor.extractData(RestTemplate.java:641)   02-22 00:13:42.977:E / AndroidRuntime(2052):at   org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:484)   02-22 00:13:42.977:E / AndroidRuntime(2052):at   org.springframework.web.client.RestTemplate.execute(RestTemplate.java:439)   02-22 00:13:42.977:E / AndroidRuntime(2052):at o   rg.springframework.web.client.RestTemplate.exchange(RestTemplate.java:415)

有没有人知道我的问题在哪里?在看起来如此简单的事情上工作几个小时很糟糕...... 谢谢!

1 个答案:

答案 0 :(得分:0)

您的代码看起来不错,我能想到的唯一解释是您正在调用的服务

  1. 不生成JSON内容。
  2. 它会生成JSON但设置Content-Type响应标头text/json或类似的内容(MappingJackson2HttpMessageConverter默认只知道application/json。)
  3. 您可以查看Content-Type响应标头(因为这是RestTemplate用来选择正确的HttpMessageConverter)的内容吗?