Android:URLConnection的setRequestProperty函数,这个方法有什么作用?

时间:2015-08-07 08:18:58

标签: java android httpurlconnection

虽然我知道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来查看。

3 个答案:

答案 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);
   }

Source Link

答案 2 :(得分:0)

我找到了查看其实现的方法。由于它是抽象的,因此必须使用Ctrl-Alt-B代替Ctrl-B才能查看。

View abstract method's implementation

后面的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);
            } 
        }
    }