3

Apache HttpClient が HttpPost ヘッダーを正しく送信するのに問題があります。

名前と値のペアなどの送信に問題はありませんが、POST ヘッダーを設定または追加するたびに、要求が行われると消えます。

setHeader と addHeader の両方を試しました。同時に両方を試しました。

これが私のコードです:

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("https://posttestserver.com/post.php");
    httppost.setHeader("Authorization: Bearer", accessToken);
    httppost.addHeader("Authorization: Bearer", accessToken);
    Log.d("DEBUG", "HEADERS: " + httppost.getFirstHeader("Authorization: Bearer"));

    ResponseHandler<String> responseHandler = new BasicResponseHandler();
    String responseBody = httpclient.execute(httppost, responseHandler);

    Log.d("DEBUG", "RESPONSE: " + responseBody);

さらに、リクエストが実行される前のデバッグステートメントは正しいヘッダーを出力するため、追加されていることがわかり、後で削除されます。

どんな助けでも大歓迎です!

編集:これが重要な場合、これはすべて AsyncTask 内で実行されています。それ以外の場合は NetworkOnMainThread 例外がスローされるため、そうではないと思いますが、言及する価値があると思いました。

4

5 に答える 5

20

コードに少なくとも 1 つの間違いがあります。代わりにこれを試してください:

httppost.setHeader("Authorization", "Bearer "+accessToken);
于 2013-02-01T21:16:26.190 に答える
2

HTTP ヘッダーを通知するサービスに接続して、出力をキャプチャ (プレーンな HTML を印刷するだけ) してみてください。少なくとも、途中でヘッダーが本当に失われたのか、それとも何か他のものなのかがわかります。

于 2013-02-01T21:32:32.430 に答える
0

使ってみてjava.net.URLConnection.addRequestProperty(String field, String newValue)

http://developer.android.com/reference/java/net/URLConnection.html#addRequestProperty%28java.lang.String,%20java.lang.String%29

于 2013-02-01T21:41:47.860 に答える
-1

個人的には、http認証を適切に設定するために他の方法を使用することを好みます:

httpClient.getCredentialsProvider().setCredentials(
  new AuthScope(hostname, port), 
  new UsernamePasswordCredentials(user, pass));
于 2013-02-01T21:17:14.177 に答える