Java - HttpURLConnection - Content-Length未显示在请求标头中

时间:2013-09-07 14:10:51

标签: java post httprequest

我创建了一个普通的HttpURLConnection对象。我设置了3个请求标头。

HttpURLConnection conn = (HttpURLConnection) someURL.openConnection();
conn.setDoInput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("User-Agent", "some_agent");
conn.setRequestProperty("Content-Type", "some_content-type");
conn.setRequestProperty("Content-Length", "some_content-length");

我查看设置的请求标头。

System.out.println(conn.getRequestProperties());

标题“Content-Length”永远不会包含在结果中。

{User-Agent=[some_agent], Content-Type=[some_content-type]}

如果我致电null,我也会conn.getRequestProperty("Content-Length")

代码工作正常,但为什么“Content-Length”会消失?

2 个答案:

答案 0 :(得分:4)

您无法设置内容长度;它是自动完成的。但是,如果事先知道内容长度,则可以使用setFixedLengthStreamingMode()

答案 1 :(得分:0)

您需要设置System.setProperty("sun.net.http.allowRestrictedHeaders", "true");

关于它的更多细节(类似问题): https://community.oracle.com/thread/1999694?tstart=0