2017-08-10 2 views
0

私はので、私はこの認証の取り扱い使用HTTPClientの

private static readonly HttpClient httpClient = new HttpClient(); 

https://docs.microsoft.com/enus/azure/architecture/antipatterns/improper-instantiation/

このHTTPClientのすべてで使用されているように、クラスの最上部にHTTPClientを静的に初期化していますと、Web APIに接続するクラスを持っていますAPIに連絡するクラス内のパブリックメソッド、login()以外の各メソッドは基本認証ヘッダーを必要とします。

認証:基本デバイスID:X-Secret-Key

ここで、device_idはこのクラスのインスタンスの定数であり、秘密鍵はlogin()メソッドからの戻り値です。

は、したがって、すべての方法が含まれている必要があります

request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(authInfo))); 

要求が作成されるHTTPRequestMessageであり、AUTHINFOは、フォーマットDEVICE_IDの文字列です:X-秘密鍵。

またはすべてのメソッドは、ログイン()関数で使用されるものから別々にHTTPClientを呼び出す必要がありますが、同じように宣言:

var handler = new HttpClientHandler(); 
handler.Credentials = new NetworkCredential (device_id, secret_key); 
var client = new HttpClient (handler); 

はそれを追加し、任意の応答

答えて

0

Authorizationヘッダをありがとうこのヘッダーを1回追加した後は、今後WEB APIサービスへのすべての呼び出しが承認される必要があります。

+0

ベアラパラメータは何をしますか? –

+0

Oups、 "Basic"、 "Bearer"ではありません。私は自分の答えを編集した –