73

クラスorg.apache.http.authをチェックしています。誰かが持っている場合、これ以上の参照または例はありますか?

4

6 に答える 6

118

私にとっては、それはうまくいきました、

final String basicAuth = "Basic " + Base64.encodeToString("user:password".getBytes(), Base64.NO_WRAP);

アパッチ HTTPクライアント:

request.setHeader("Authorization", basicAuth);

HttpUrl接続:

connection.setRequestProperty ("Authorization", basicAuth);
于 2012-02-21T12:24:11.517 に答える
80

私は以前にその特定のパッケージに会ったことがありませんが、それはクライアント側のHTTP認証用であると言っています。これはjava.net、次のようにAPIを使用してAndroidで実行できました。

Authenticator.setDefault(new Authenticator(){
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("myuser","mypass".toCharArray());
    }});
HttpURLConnection c = (HttpURLConnection) new URL(url).openConnection();
c.setUseCaches(false);
c.connect();

明らかに、getPasswordAuthentication()は、定数を返すよりもインテリジェントなことを行う必要があります。

POST認証付きの本文(例)を使用してリクエストを行う場合は、 Androidの問題4326に注意してください。提案された修正をプラットフォームにリンクしましたが、基本認証のみが必要な場合は簡単な回避策があります。Authenticatorを気にせず、代わりに次のようにします。

c.setRequestProperty("Authorization", "basic " +
        Base64.encode("myuser:mypass".getBytes(), Base64.NO_WRAP));
于 2009-12-28T10:39:01.783 に答える
14

http ヘッダーを手動で挿入してリクエストできます。

HttpGet request = new HttpGet(...);
request.setHeader("Authorization", "Basic "+Base64.encodeBytes("login:password".getBytes()));
于 2011-03-15T19:24:28.583 に答える
13

手動の方法は import android.util.Base64 でうまく機能しますが、encode を呼び出すときに Base64.NO_WRAP を設定してください:

String basicAuth = "Basic " + new String(Base64.encode("user:pass".getBytes(),Base64.NO_WRAP ));
connection.setRequestProperty ("Authorization", basicAuth);
于 2012-01-08T17:37:32.593 に答える
3

Android プロジェクトでは、次の Base64 ライブラリを使用しました。

http://iharder.net/base64

これは非常に広範なライブラリであり、これまでのところ問題はありませんでした。

于 2010-06-04T11:34:12.943 に答える