4

我创建了一个普通的 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")

代码工作正常,但为什么“内容长度”消失了?

4

2 回答 2

5

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

于 2013-09-07T14:23:22.437 回答
0

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

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

于 2015-08-05T12:03:37.560 回答