2014-02-28 5 views
0

Android 클라이언트에서 RESTful 웹 서비스에 연결하려고합니다.Android RestTemplate exchange()가 HttpClientErrorException을 throw 함 : 401 Unauthorized

그러나, 나는 항상 제공 HttpClientErrorException: 401 Unauthorized even if provide the correct authorization token in the request header.

URL이 정확 얻을.

나는이 요청 공장 시도 : 나도 같은 헤더 및 URL과 Chorme에 대한 우체부를 사용하는 경우 I는 응답을

template.setRequestFactory(new SimpleClientHttpRequestFactory()); 

. 해결

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(); 
}} 
+0

'AuthUtil.getCurrentUserAuthorization()'의 기능은 무엇입니까? – holmis83

+0

AuthUtil.getCurrentUserAuthorization()은 요청 헤더에 추가해야하는 인증 토큰을 반환합니다. – razvan

+0

인증 토큰을 올바르게 구성 했습니까? – holmis83

답변

0

문제 :

내 코드입니다. 방금 Maven 종속성을 업데이트해야했습니다.