可能重复:
HTTP GET请求与身体
我在这里读几讨论不提倡通过HTTP GET发送内容。 有数据的大小,可以通过客户端(网页浏览器)发送的限制。 和处理GET数据也依赖于服务器。 请参考下面的部分资源 。
不过,我一直在问,以测试使用RestTemplate通过HTTP GET发送内容的可能性。 我refered春论坛的讨论很少,但他们并没有回答。 (请注意:通过HTTP POST工作正常发送数据)。 讨论在这里建议使用POST代替。
开发ENV - JBoss应用服务器5.1,春季3.1.3
客户
@Test
public void testGetWithBody()
{
// acceptable media type
List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
acceptableMediaTypes.add(MediaType.TEXT_PLAIN);
// header
HttpHeaders headers = new HttpHeaders();
headers.setAccept(acceptableMediaTypes);
// body
String body = "hello world";
HttpEntity<String> entity = new HttpEntity<String>(body, headers);
Map<String, Object> uriVariables = new HashMap<String, Object>();
uriVariables.put("id", "testFile");
// Send the request as GET
ResponseEntity<String> result = restTemplate.exchange(
"http://localhost:8080/WebApp/test/{id}/body",
HttpMethod.GET, entity, String.class, uriVariables);
Assert.assertNotNull(result.getBody());
}
服务器 @Controller
@RequestMapping(value = "/{id}/body", method = RequestMethod.GET)
public @ResponseBody
String testGetWithBody(@PathVariable String id,
@RequestBody String bodyContent)
{
return id + bodyContent;
}
问题 -执行此测试情况下返回500内部服务器错误。 在调试时,我发现控制器未击中。
它是正确理解RestTemplate提供了发送数据请求体的方式,但出现错误的原因是服务器无法处理请求的身体吗?
如果通过HTTP GET发送的请求主体不是常规为什么RestTemplate提供的API允许发送呢? 这是否意味着有能够通过GET处理请求体几台服务器?
资源 -使用RestTemplate在春季论坛通过HTTP GET发送体的讨论
http://forum.springsource.org/showthread.php?129510-Message-body-with-HTTP-GET&highlight=resttemplate+http+get
http://forum.springsource.org/showthread.php?94201-GET-method-on-RestTemplate-exchange-with-a-Body&highlight=resttemplate+http+get
资源 -通过HTTP GET发送体一般讨论
得到-与请求体
是,这个语句纠正-HTTP-GET-方法,始终有-无消息体
得到有或后当读取请求体
HTTP-URI-得到限制