【发布时间】:2013-02-07 12:11:58
【问题描述】:
我正在尝试将 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),并且包含了我的 Jackson 文件,所以我认为这应该可以工作......但我收到以下错误:
02-22 00:13:42.977: E/AndroidRuntime(2052): 由: org.springframework.web.client.RestClientException:无法提取 响应:没有找到适合响应类型的 HttpMessageConverter [org.springframework.android.basicauth.CatMessage] 和内容类型 [文本/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.RestTemplate.doExecute(RestTemplate.java:484) 02-22 00:13:42.977: E/AndroidRuntime(2052): 在 org.springframework.web.client.RestTemplate.execute(RestTemplate.java:439) 02-22 00:13:42.977: E/AndroidRuntime(2052): 在 o rg.springframework.web.client.RestTemplate.exchange(RestTemplate.java:415)
有人知道我的问题可能出在哪里吗?在看似简单的事情上工作几个小时真是糟透了…… 谢谢!
【问题讨论】:
标签: android json spring jackson