【发布时间】:2013-12-13 01:03:18
【问题描述】:
我正在使用 Spring 框架并尝试执行发布请求。我的 post 方法采用 url、HttpMethod 和进入请求正文的参数。
注意:在 network.POSTRequest( URL, ..,...) 中传递的 var URL 对于每个调用都是不同的。
现在,如果我用这样的一个参数调用这个方法......(它工作得很好!)
//with one parameter
MultiValueMap<String, String> postParams = new LinkedMultiValueMap<String, String>();
postParams.add("id", "524cd432539ed");
network.POSTRequest( URL, HttpMethod.POST, postParams );
,但是如果有两个这样的参数......(它会抛出这个错误)
org.springframework.web.client.HttpServerErrorException: 500 内部服务器错误
//with two parameters
MultiValueMap<String, String> postParams = new LinkedMultiValueMap<String, String>();
postParams.add("id", "crisp");
postParams.add("name", "honey");
network.POSTRequest( URL, HttpMethod.POST, postParams );
这是 POSTRequest 方法
public Object POSTRequest( String URL, HttpMethod method, MultiValueMap<String, String> postParams ){
HttpEntity<?> requestEntity =
new HttpEntity< MultiValueMap<String, String> >(postParams, getHeaders());
RestTemplate restTemplate = new RestTemplate();
List< HttpMessageConverter<?> > messageConverters = new ArrayList< HttpMessageConverter<?> >();
messageConverters.add( new MappingJacksonHttpMessageConverter() );
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
restTemplate.setMessageConverters( messageConverters );
System.out.println( requestEntity.toString() );
ResponseEntity result =
restTemplate.exchange( URL, method, requestEntity, APIResponse.class ) ;
return result.getBody();
}
【问题讨论】:
-
让我们看看你的控制器
-
您是否使用浏览器 POST 插件或
wget或curl使用单个或多个参数手动测试了 POST 端点?可能是端点在 2 个参数上呕吐。 -
是的,我已经使用邮递员(chrome 扩展)完成了一个请求,它成功了。
标签: java spring rest spring-mvc