2014-10-28 26 views
0

我想通過彈簧安全與休息模板登錄我的API。我能夠在我的web項目中成功登錄,但不能使用android應用程序登錄。我試圖解決這個問題很長一段時間,但無法弄清楚。j_spring_security_check導致401(安卓)

網頁代碼:

@Autowired 
RestTemplate restTemplate; 

MultiValueMap<String, String> loginMap = new LinkedMultiValueMap<String, String>(); 
loginMap.add("j_username", j_username); 
loginMap.add("j_password", j_password); 

HttpEntity<?> userEntity = new HttpEntity<Object>(loginMap, new HttpHeaders()); 

restTemplate.postForObject(PATH + "/j_spring_security_check", userEntity, String.class); 

的Android代碼:

RestTemplate restTemplate = new RestTemplate(); 

MultiValueMap<String, String> loginMap = new LinkedMultiValueMap<String, String>(); 
loginMap.add("j_username", this.mEmail); 
loginMap.add("j_password", this.mPassword); 

HttpEntity<?> userEntity = new HttpEntity<Object>(loginMap, new HttpHeaders()); 
restTemplate.getMessageConverters().add(new MappingJacksonHttpMessageConverter()); 

restTemplate.postForObject(PATH + "/j_spring_security_check", userEntity, String.class); 

感謝

回答

1

我增加了兩個轉換器解決了這一問題。

RestTemplate restTemplate = new RestTemplate(); 

    List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>(); 
    messageConverters.add(new FormHttpMessageConverter()); 
    messageConverters.add(new StringHttpMessageConverter()); 
    messageConverters.add(new MappingJacksonHttpMessageConverter()); 
    restTemplate.setMessageConverters(messageConverters); 

    MultiValueMap<String, String> loginMap = new LinkedMultiValueMap<String, String>(); 
    loginMap.add("j_username", this.mEmail); 
    loginMap.add("j_password", this.mPassword); 

    HttpEntity<?> userEntity = new HttpEntity<Object>(loginMap, new HttpHeaders()); 

    restTemplate.postForObject(PATH + "/j_spring_security_check", userEntity, String.class);