我正在尝试使用rest模板通过spring security登录我的API。我能够在我的网络项目中成功登录,但不能使用Android应用程序。我试图解决这个问题很长一段时间但无法弄清楚。
网络代码:
@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);
由于
答案 0 :(得分: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);