例如,如果帖子网址为:
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的大小是否有限制?可以是任何尺寸吗?
答案 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的最大长度。