0

でHttp Digestを使いたいVolley。これまでのところ、次のコードを使用しました。

@Override
public Map<String, String> getHeaders() throws AuthFailureError {

    HashMap<String, String> params = new HashMap<String, String>();
    String creds = String.format("%s:%s","admin","mypass");
    String auth = "Digest " + Base64.encodeToString(creds.getBytes(), Base64.NO_WRAP);
    params.put("Authorization", "Digest " +auth);
    return params;

}

これまでのところ、サーバーから間違った資格情報として応答があります。つまり、認証は機能していますが、間違った資格情報のみが渡されます。しかし、私の資格情報は正しいです。

4

1 に答える 1

1

基本認証に適した Base64 エンコーディングを使用しますが、これはダイジェストの仕組みではありません。ダイジェストおよび基本認証の仕様は、 https ://www.rfc-editor.org/rfc/rfc2617 で確認できます。

新しいダイジェスト仕様はここにあります: https://www.rfc-editor.org/rfc/rfc7616

ここのウィキペディアに関する素晴らしい追加説明: https://en.wikipedia.org/wiki/Digest_access_authentication

Digest Auth の Volley 実装では、 http ://www.java2s.com/Open-Source/Android_Free_Code/Framework/platform/com_gm_android_volleyHttpDigestStack_java.htm を使用できます 。

RequestQueue の作成に使用するネットワークを作成するときに、この http スタックを渡すだけで済みます。

    RequestQueue requestQueue;
    requestQueue = new RequestQueue(
            new DiskBasedCache(rootDir),
            new BasicNetwork(new HttpDigestStack())
    );
    requestQueue.start();
于 2016-03-20T20:25:14.500 に答える