问题
我正在考虑将现有的http方法转换为spring-android,但失败了。
JSONObject defaultJsonObject = new JSONObject();
defaultJsonObject.put("ln", "Kiat");
defaultJsonObject.put("CountryName", "Malaysia");
defaultJsonObject.put("CityName", "Kuala Lumpur");这是我现有的http帖子,它正在工作,它将形成一个帖子体,如:[json={"ln":"Kiat","CountryName":"Malaysia","CityName":"Kuala Lumpur"}]
List<NameValuePair> postParams = new ArrayList<NameValuePair>();
postParams.add(new BasicNameValuePair("json", jsonObject.toString()));
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postParams);
System.out.println("post param: " + postParams.toString());
post.setEntity(entity);
post.setHeader("Accept", "application/json");但是当我用RestTemplate转换到Spring系统时,它失败了。即使是我已经设法形成了post主体作为[json={"ln":"Kiat","CountryName":"Malaysia","CityName":"Kuala Lumpur"}],我一直得到500个内部服务器错误
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
List<NameValuePair> postParams1 = new ArrayList<NameValuePair>();
postParams1.add(new BasicNameValuePair("json", jsonObject.toString()));
HttpEntity<?> requestEntity = new HttpEntity<Object>(postParams1, requestHeaders);
RestTemplate restTemplate = new RestTemplate();
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity,String.class)post body格式如下所示
json={"ln":"Kiat",“CountryName”:“马来西亚”,“CityName”:“吉隆坡”}
发布于 2015-01-31 17:37:27
(在问题编辑中回答。转换成社区wiki的答案。见Question with no answers, but issue solved in the comments (or extended in chat) )
“任择议定书”写道:
问题解决了。解决方案: 要使用
RestTemplate,如果您不确定需要哪些转换器,则必须在构造函数中设置TRUE。有了这个RestTemplate restTemplate = new RestTemplate(true);,它将包括所有的标准转换器。但这有点浪费,因为你必须包括所有不想要的转换器。 对于我的情况,经过测试后,我发现我需要两个转换器才能使我的HTTP成功
restTemplate.getMessageConverters().add(new FormHttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());我不知道我们需要什么转换器组合,也许有人有更深层次的解释?
https://stackoverflow.com/questions/16973191
复制相似问题