Java 为什么HttpURLConnection不发送多个标头?
我试图使用HttpURLConnection发送多个带有请求的头(accept和auth key),但只发送第一个头Java 为什么HttpURLConnection不发送多个标头?,java,Java,我试图使用HttpURLConnection发送多个带有请求的头(accept和auth key),但只发送第一个头 URL url = new URL(fileOrUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); for (String h : getHeaders()) { String[] keyval =
URL url = new URL(fileOrUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
for (String h : getHeaders()) {
String[] keyval = h.split(":");
if (keyval.length != 2) {
throw new IllegalArgumentException();
}
System.out.println("Setting header " + keyval[0] + ": " + keyval[1]);
conn.addRequestProperty(keyval[0], keyval[1]);
}
System.out.println(conn.getRequestProperties());
return stream = conn.getInputStream();
这导致:
Setting header Accept: application/x-google-protobuf
Setting header Authorization: apikey
{Accept=[ application/x-google-protobuf]}
为什么只发送一个标题 如果您使用wire shark或类似工具,您应该看到两个标头都已发送
HttpURLConnection
实现类中有一些代码从getRequestProperties()
返回的映射中过滤出敏感头。过滤掉的标题之一是“Authorization”
过滤的头(在Java 8中)是
“代理授权”
,“授权”
,“Cookie”
,和“Cookie2”
,如果使用wire shark或类似工具,您应该看到这两个头都已发送
HttpURLConnection
实现类中有一些代码从getRequestProperties()
返回的映射中过滤出敏感头。过滤掉的标题之一是“Authorization”
过滤的标题(在Java 8中)是
“代理授权”
,“授权”
,“Cookie”
,和“Cookie2”
,不错!我实际上在测试代码,想知道为什么只有Authorization
头才会出现这种情况。回答得很好!有道理——我在看Java7Javadoc!javadocs没有提到这种行为。很好!我实际上在测试代码,想知道为什么只有Authorization
头才会出现这种情况。回答得很好!有道理——我在看Java7Javadoc!javadocs没有提到这种行为,我认为这不是重复的——有些人可能不会紧密地RTFM并将授权头从getRequestProperties中过滤出来的事实联系起来。这是相同的答案,但不一定是同一个问题。我认为这不是重复的——有些人可能不会紧密地RTFM并将授权头从getRequestProperties中过滤出来的事实联系起来。答案是一样的,但不一定是同一个问题。