我正在尝试将 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
}
我认为这应该可行,因为我几乎正在复制Spring for Android 的基本身份验证项目
但是会发生什么是解析的问题(我认为)。当然,我已经包含了 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): at 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): 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): 在 rg.springframework.web.client.RestTemplate.exchange(RestTemplate.java:415)
有谁知道我的问题可能出在哪里?在看似如此简单的事情上工作几个小时真是太糟糕了……谢谢!