Android RestTemplate exchange()引发HttpClientErrorException:401未经授权
我正在尝试从Android客户端连接到RESTful web服务 但是,即使在请求头中提供了正确的授权令牌,我总是会得到一个Android RestTemplate exchange()引发HttpClientErrorException:401未经授权,android,spring,unauthorized,spring-android,Android,Spring,Unauthorized,Spring Android,我正在尝试从Android客户端连接到RESTful web服务 但是,即使在请求头中提供了正确的授权令牌,我总是会得到一个HttpClientErrorException:401未经授权。 提供的url是正确的 我还尝试了此请求工厂: template.setRequestFactory(new SimpleClientHttpRequestFactory()); 如果我使用具有相同标题和url的Postman for Chorme,我会得到一个响应 这是我的代码: public class
HttpClientErrorException:401未经授权。
提供的url是正确的
我还尝试了此请求工厂:
template.setRequestFactory(new SimpleClientHttpRequestFactory());
如果我使用具有相同标题和url的Postman for Chorme,我会得到一个响应
这是我的代码:
public class PutSomeObjectTask extends AsyncTask<SomeObject, Void, SomeObject>{
@Override
protected SomeObject doInBackground(SomeObject... params) {
SomeObject object = params[0];
String url = ...;
RestTemplate template = new RestTemplate();
template.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
template.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
template.getMessageConverters().add(new FormHttpMessageConverter());
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");
headers.set("Authorization", AuthUtil.getCurrentUserAuthorization());
HttpEntity<SomeObject> requestEntity = new HttpEntity<SomeObject>(object, headers);
ResponseEntity<SomeObject> responseEntity = template.exchange(url, HttpMethod.PUT, requestEntity, SomeObject.class);
return responseEntity.getBody();
}}
公共类PutSomeObjectTask扩展了AsyncTask{
@凌驾
受保护的SomeObject doInBackground(SomeObject…参数){
SomeObject对象=参数[0];
字符串url=。。。;
RestTemplate=新的RestTemplate();
setRequestFactory(新的HttpComponentsClientHttpRequestFactory());
template.getMessageConverters().add(新映射Jackson2HttpMessageConverter());
template.getMessageConverters().add(新FormHttpMessageConverter());
HttpHeaders=新的HttpHeaders();
添加(“内容类型”、“应用程序/json”);
set(“Authorization”,AuthUtil.getCurrentUserAuthorization());
HttpEntity requestEntity=新的HttpEntity(对象、头);
ResponseEntity ResponseEntity=template.exchange(url、HttpMethod.PUT、requestEntity、SomeObject.class);
返回responseEntity.getBody();
}}
问题已解决。我只需要更新Maven依赖项。AuthUtil.getCurrentUserAuthorization()做什么?AuthUtil.getCurrentUserAuthorization()返回必须添加到请求标头的授权令牌。是否确实正确构造了授权令牌?我在Postman中使用了相同的令牌,可以连接到服务。