首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring post失败

Spring post失败
EN

Stack Overflow用户
提问于 2013-06-06 22:19:04
回答 1查看 2.3K关注 0票数 0

问题

我正在考虑将现有的http方法转换为spring-android,但失败了。

代码语言:javascript
复制
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"}]

代码语言:javascript
复制
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个内部服务器错误

代码语言:javascript
复制
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”:“吉隆坡”}

EN

回答 1

Stack Overflow用户

发布于 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成功

代码语言:javascript
复制
restTemplate.getMessageConverters().add(new FormHttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());

我不知道我们需要什么转换器组合,也许有人有更深层次的解释?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16973191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档