给出java.lang.IllegalStateException的setRequestProperty方法:在建立连接后无法设置方法

时间:2011-10-11 12:42:55

标签: java android httpconnection

HttpURLConnection con = null;
        Response response = new Response();
        String TAG = "HttpConHandler";

        try{
            /*
             * IMPORTANT: 
             * User SHOULD provide URL Encoded Parms
             */
            Log.p(TAG, "URL="+ urlStr);
            String q=httpHeaders.get("Authorization");

            URL url = new URL(urlStr);
            con = (HttpURLConnection) url.openConnection(); 

            con.setRequestProperty("Authorization", q);
            con.setRequestProperty("GData-Version", "3.0");

您好我在调用java.lang.IllegalStateException: Cannot set method after connection is made方法时遇到setRequestProperty错误,但是当我在连接之前调用此方法时,我得到NullPointerException因为con为空。我该怎么做才能解决这个问题?

3 个答案:

答案 0 :(得分:1)

请检查来自Google的此网址:http://developer.android.com/reference/java/net/HttpURLConnection.html

在设置标题之前,可以使用openConnection()方法。以下是文档中的步骤:

  1. 通过调用URL.openConnection()并将结果转换为HttpURLConnection来获取新的HttpURLConnection。
  2. 准备请求。请求的主要属性是其URI。请求标头还可能包含元数据,如凭据,首选内容类型和会话Cookie。
  3. 可选择上传请求正文。如果实例包含请求正文,则必须使用setDoOutput(true)进行配置。通过写入getOutputStream()返回的流来传输数据。
  4. 阅读回复。响应标头通常包括元数据,例如响应正文的内容类型和长度,修改日期和会话cookie。可以从getInputStream()返回的流中读取响应主体。如果响应没有正文,则该方法返回空流。
  5. 断开连接。阅读完回复正文后,应通过调用HttpURLConnection关闭disconnect()。断开连接释放连接所拥有的资源,以便关闭或重用它们。
  6. 但是,如果问题仍然存在,您可以尝试调试代码并检查connection.connected私有标志以查看它变为真的位置;在调用getContentType()方法后,我遇到了类似的问题。

    否则您只需切换到HttpClient API:

      HttpClient httpclient = new DefaultHttpClient();
    
        // Prepare a request object
        HttpGet httpget = new HttpGet(url); 
    
        // Execute the request
        HttpResponse response;
        try {
            response = httpclient.execute(httpget);
    ....
    

答案 1 :(得分:0)

请勿使用网址的便捷方法,使用HttpURLConnection或其他库。

答案 2 :(得分:0)

这可能有效:

URL url = new URL(urlStr);
con = (HttpURLConnection) url.openConnection(); 
con.setDoOutput(true);
con.setRequestProperty("Authorization", q);
con.setRequestProperty("GData-Version", "3.0");