虽然我知道StackOverflow已经有setRequestProperty function of HttpURLConnection个问题,但我真的不明白这个方法的作用。调试时,我不能 "进入" 它(F7)。我按下Ctrl-B查看方法的正文,但它只有以下代码:
public void setRequestProperty(String field, String newValue) {
checkNotConnected();
if (field == null) {
throw new NullPointerException("field == null");
}
}
和checkNotConnected
:
private void checkNotConnected() {
if (connected) {
throw new IllegalStateException("Already connected");
}
}
我的意思是将值放在字段中的代码在哪里?任何解释都表示赞赏。
更新(2015/08/08): 我找到了查看其实现的方法。由于它是抽象的,必须使用Ctrl-Alt-B而不是Ctrl-B来查看。
答案 0 :(得分:1)
我猜你正在以错误的方式访问,或者拥有某种受保护的代码......
原始功能是:
/**
* Sets the general request property. If a property with the key already
* exists, overwrite its value with the new value.
* ...
*/
public void setRequestProperty(String key, String value) {
if (connected)
throw new IllegalStateException("Already connected");
if (key == null)
throw new NullPointerException ("key is null");
if (requests == null)
requests = new MessageHeader();
requests.set(key, value);
}
requests.set(key, value)
在哪里做你要求的事情:)!
答案 1 :(得分:1)
这是setRequestProperty()的返回源代码
设置常规请求属性。如果具有该键的属性已存在,请使用新值覆盖其值。
注意:HTTP要求所有可以合法拥有相同键的多个实例的请求属性,以使用逗号分隔列表语法,这样可以将多个属性附加到单个属性中。
参数:
键入请求已知的关键字(例如,"接受")。 估价与之相关的值。
抛出:
java.lang.IllegalStateException
如果已连接
java.lang.NullPointerException
如果key为null 也可以看看: getRequestProperty(java.lang.String中)
public void setRequestProperty(String key, String value) {
if (connected)
throw new IllegalStateException("Already connected");
if (key == null)
throw new NullPointerException ("key is null");
if (requests == null)
requests = new MessageHeader();
requests.set(key, value);
}
答案 2 :(得分:0)
我找到了查看其实现的方法。由于它是抽象的,因此必须使用Ctrl-Alt-B
代替Ctrl-B
才能查看。
后面的setRequestProperty
源代码如下(在jre \ lib \ rt.jar中):
public void setRequestProperty(String var1, String var2) {
if(this.connected) {
throw new IllegalStateException("Already connected");
} else if(var1 == null) {
throw new NullPointerException("key is null");
} else {
if(this.isExternalMessageHeaderAllowed(var1, var2)) {
this.requests.set(var1, var2);
}
}
}