Spring RestTemplate postForObject是否有限制大小?

时间:2012-09-05 02:06:48

标签: spring resttemplate

例如,如果帖子网址为:

  

http://www.wolf.com/pcap/search?stime= {STIME}&安培; ETIME = $ {ETIME}&安培; BPF = $ {BPF}

然后我们可以这样做:

Map<String, String> vars = new HashMap<String, String>();
vars.put("bpf", bpf);

...
responseString = restTemplate.postForObject(url, null, String.class,vars);

如果bpf是一个字符串,那么bpf的大小是否有限制?可以是任何尺寸吗?

1 个答案:

答案 0 :(得分:1)

不幸的是答案是:“这取决于”。

更准确地说:当您将bpf作为参数附加到URL时,如果您正在执行POST或GET,这并不重要。有时对服务器将处理的URL的长度有限制,但这取决于服务器接受的内容,并且无法从RestTemplate(客户端)确定。

例如,如果您发送REST请求的服务器是tomcat,那么对于tomcat 6.0或更高版本,完整标头(URL,HTTP-Header等)的最大值默认为8kB;见例如https://serverfault.com/questions/56691/whats-the-maximum-url-length-in-tomcat

如果你也可以控制服务器端,你可以通过不发送bpf作为参数来改变预期的接口,但是作为请求体,例如:

Map<String, String> vars = new HashMap<String, String>();
// vars.put("bpf", bpf); <--- not needed
responseString = restTemplate.postForObject(url, bpf, String.class, vars);

(然后当然从请求正文获取服务器上的bpf)。

否则你运气不好,必须限制URL的长度。也许使用代理或网络嗅探器来查看实际发送的额外标头,并从8kB限制中减去该值以获得URL的最大长度。