5
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エラーが発生しますが、接続前にこのメソッドを呼び出すと、 nullが発生するためです。これを解決するにはどうすればよいですか?setRequestPropertyNullPointerExceptioncon

4

3 に答える 3

1

Google からこの URL を確認してください: 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()。切断すると、接続によって保持されているリソースが解放されるため、それらを閉じたり再利用したりできます。

ただし、問題が解決しない場合は、コードをデバッグして、connection.connected プライベート フラグをチェックし、どこで true になるかを確認してください。メソッドを呼び出した後、同様の問題が発生しました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);
....
于 2013-04-22T15:28:31.957 に答える
0

URLの便利なメソッドを使用しないでください。HttpURLConnectionまたは他のライブラリを使用してください。

于 2011-10-11T12:53:33.290 に答える
0

これはうまくいくかもしれません:

URL url = new URL(urlStr);
con = (HttpURLConnection) url.openConnection(); 
con.setDoOutput(true);
con.setRequestProperty("Authorization", q);
con.setRequestProperty("GData-Version", "3.0");
于 2011-10-11T12:57:41.087 に答える