2014-10-28 27 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);