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

Android Spring:没有合适的消息转换器,android,json,spring,jackson,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"; Ht

我正在尝试使用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);
        }
    }
因为我使用的是无效用户名和密码组合(此服务器部件工作正常),所以我应该得到的是:

{

}

我认为这应该行得通,因为我几乎是在复制基本的auth

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

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):在 org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:79) 02-22 00:13:42.977:E/AndroidRuntime(2052):在 org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:655) 02-22 00:13:42.977:E/AndroidRuntime(2052):在 org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:641) 02-22 00:13:42.977:E/AndroidRuntime(2052):在 org.springframework.web.client.restemplate.doExecute(restemplate.java:484) 02-22 00:13:42.977:E/AndroidRuntime(2052):在 org.springframework.web.client.restemplate.execute(restemplate.java:439) 02-22 00:13:42.977:E/AndroidRuntime(2052):在 org.springframework.web.client.restemplate.exchange(restemplate.java:415)

有人知道我的问题在哪里吗?在一件看起来很简单的事情上工作几个小时真糟糕。。。
谢谢大家!

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

  • 不生成JSON内容
  • 它生成JSON,但设置
    text/JSON
    Content-Type
    响应头或类似的内容(默认情况下,
    MappingJackson2HttpMessageConverter
    只知道
    application/JSON

  • 您可以检查
    内容类型
    响应头(因为这正是
    restemplate
    用来选择正确的
    HttpMessageConverter
    )吗?

    我认为我的内容类型很好:内容类型:application/json。在将请求解析为对象之前,是否有一种方法可以打印请求?所以我可以检查我的JSON是否真的是我所期望的?每当我在浏览器中抛出URL时,它都会给出我发布的确切JSON…解析的不是请求,而是响应。最简单的方法就是调试它。是的,我在上面的评论中是指响应。我无法调试响应,我使用的是设备而不是模拟器。。。你知道还有别的办法吗?谢谢。只要尝试使用
    curl
    或某个graphic rest客户端执行完全相同的请求,看看该响应是否有可疑之处。。。
    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