web-dev-qa-db-ja.com

Android OKHTTPClientリクエストに(OAuthトークン)Authorizationヘッダーを設定する方法

次のように、通常のHTTPURLConnectionリクエストに認証ヘッダーを設定できます。

URL url = new URL(source);  
HttpURLConnection connection = this.client.open(url);  
connection.setRequestMethod("GET");  
connection.setRequestProperty("Authorization", "Bearer " + token);  

これはHttpURLConnectionの標準です。上記のコードスニペットthis.clientはSquareのOkHTTPClienthere )のインスタンスです。

Authヘッダーを設定するOkHTTP固有の方法はあるのでしょうか。私はOkAuthenticatorクラスを参照していますが、それをどのように使用するか正確にはわかりません/それは認証チャレンジのみを処理するようです。

すべてのポインタを事前に感謝します。

22
Alfie Hanssen

現在のバージョン(2.0.0)を使用している場合は、リクエストにヘッダーを追加できます。

Request request = new Request.Builder()
            .url("https://api.yourapi...")
            .header("ApiKey", "xxxxxxxx")
            .build();

代わりに:

connection.setRequestMethod("GET");    
connection.setRequestProperty("ApiKey", "xxxxxxxx");

ただし、古いバージョン(1.x)では、使用する実装がそれを実現する唯一の方法だと思います。 their changelog の言及:

バージョン2.0.0-RC1 2014-05-23

新しいリクエストタイプとレスポンスタイプ。それぞれに独自のビルダーがあります。ネットワークにリクエストボディを書き込むRequestBodyクラスと、ネットワークからレスポンスボディを読み取るResponseBodyもあります。 スタンドアロンのHeadersクラスは、HTTPヘッダーへの完全なアクセスを提供します。

17
pt2121