例とコードを見ていますが、実装されたものは何も表示されません。これは現段階で可能ですか?AndroidでVolleyで基本認証を使用するにはどうすればよいですか?
答えて
はい、可能です。 Request.getHeaders()をオーバーライドする必要があります。私は怠惰だし、Android用のSpringからHttpHeadersとHttpAuthenticationを使用しましたが、authヘッダーを作成してメソッドから返すことができます。 getHeaders()から基本認証のauthヘッダーを返すことができます。これは、基本認証のサンプルリクエストです。
public class GetUser extends Request<User> {
private static final String TAG = GetUser.class.getName();
private Response.Listener<User> mListener;
private ObjectMapper mMapper = new ObjectMapper();
public GetUser(Response.ErrorListener errorListener, Response.Listener<User> listener){
super(Method.GET, PoisUtils.BASE_URL + "/users", errorListener);
mListener = listener;
}
@Override
protected Response<User> parseNetworkResponse(NetworkResponse response) {
String jsonString = new String(response.data);
try {
User result = mMapper.readValue(jsonString, User.class);
return Response.success(result, getCacheEntry());
} catch (IOException e) {
Log.d(TAG, e.getMessage());
}
return null;
}
@Override
protected void deliverResponse(User response) {
mListener.onResponse(response);
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
return AuthUtils.buildAuthHeaders().toSingleValueMap();
}
}
そして、ここで私は、認証ヘッダにちょうどそのためのAndroidのための春を使用したくない人のために
public static HttpHeaders buildAuthHeaders(){
if(UserUtils.isUserLogged()){
HttpHeaders requestHeaders = new HttpHeaders();
User user = PoisApplication.get().getUser();
HttpAuthentication auth = new HttpBasicAuthentication(
user.getUsername(), user.getPassword());
requestHeaders.setAuthorization(auth);
return requestHeaders;
}
return null;
}
を構築する方法で、ここでそれを行う方法です。あなたが動作するように、このためにBase64.NO_WRAP
の代わりBase64.DEFAULT
を使用する必要があり
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> params = new HashMap<String, String>();
String creds = String.format("%s:%s","USERNAME","PASSWORD");
String auth = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.DEFAULT);
params.put("Authorization", auth);
return params;
}
注意。コメントで指摘されている通り。
API 8+
APKの最終的なサイズは小規模なプロジェクトにとって非常に重要なので、これは本当に良いことです。 – slott
Base64.DEFAULTの代わりにBase64.NO_WRAPを使用する必要があることに注意してください。 – Logiraptor
@Logiraptorあなたのご意見はAndrpiod 2.3デバイスで400エラーを修正するのに役立ちました。問題の原因は何でしょうか? – dimetil
(イカのような)プロキシ認証のために、このヘッダを使用します。
String credentials = proxyUsername + ":" + proxyPassword;
String auth = "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
headers.put("Proxy-Authorization", auth);
- 1. SignalR(.NETクライアント)でカスタム基本認証を使用するにはどうすればよいですか?
- 2. マルチスレッドHTTPClient環境で基本認証を使用するにはどうすればよいですか?
- 3. AndroidでHTTP基本認証ヘッダーを送信するにはどうすればよいですか?
- 4. Android Volley ImageLoader - 基本的なHTTP認証の使い方
- 5. rspecコントローラの例で基本認証をテストするにはどうすればよいですか?
- 6. cgi pythonスクリプトで基本認証ユーザ名を取得するにはどうすればよいですか?
- 7. Postmanのコレクション全体で基本認証ヘッダーを共有するにはどうすればよいですか?
- 8. RestKit 0.20.0で基本認証を設定するにはどうすればよいですか?
- 9. SpringブートでJWT認証を使用して基本認証を実装するにはどうすればよいですか?
- 10. JavaScript/HTMLから基本認証情報を取得するにはどうすればよいですか?
- 11. ノードアプリケーションでDjango認証を使用してユーザーを認証するにはどうすればよいですか?
- 12. 基本認証ヘッダーを削除するにはどうすればよいですか?
- 13. Laravel基本認証ミドルウェアのドライバを変更するにはどうすればよいですか?
- 14. 1つのAndroidプロジェクトでVolleyとLoaderを使用するにはどうすればよいですか?
- 15. Android - 基本クラスを作成して使用するにはどうすればよいですか?
- 16. クッキー認証を使用するプロジェクトでの基本認証
- 17. ホットタオルでロールを使用してWindows認証を使用するにはどうすればよいですか?
- 18. Windows認証でカスタムログインページ(Windowsログインボックスではない)を使用するにはどうすればよいですか?
- 19. WATIR-WebDriverで証明書ベース認証を使用するにはどうすればよいですか?
- 20. Railsで基本クラスを使用してSTIを無視するにはどうすればよいですか?
- 21. 基本認証は、私はAlamofireの基本認証サポートを使用しようとしている
- 22. Androidで新しいナビゲーションドロワーの基本動作を設定するにはどうすればよいですか?
- 23. サーバからビデオファイルを再生するためにAVPlayerで基本認証を使用するにはどうすればいいですか?
- 24. Android用のFirebase認証でSigned in Phone Numberを変更するにはどうすればよいですか?
- 25. クライアント側の認証を使用する場合、ユーザーに関する基本情報のみを取得するにはどうすればよいですか?
- 26. Google/OpenSocialガジェットの認証にasp.netフォーム認証を使用するにはどうすればいいですか
- 27. 基本認証を使用するOSMF
- 28. リアクションナビゲーションアプリでユーザーを認証するにはどうすればよいですか?
- 29. Google認証エンジンで認証と承認を変更するにはどうすればよいですか?
- 30. 基本認証によるログイン後の後続のリクエストで、スプリング基本認証がどのように機能するのですか?
は、返信いただきありがとうございます。しかし、これは非常に一般的な/基本的な機能のように見えます。私は、ボレーのような図書館はこれを何らかの方法で簡単に実装するべきだと思います。私はこのライブラリを試していますが、これは有望です(HTTPライブラリのキャッシングについては本当に興奮しています)が、あまり意味を持たない特定の部分を見つけています。 ..)はリスナーの一部であり、リクエストではないので、私は自分のベースリクエストを作成してこれらのヘッダーを常に追加することができます。たぶん、いくつかのデフォルトオプション(ヘッダー)を持っているRequestQueueでなければなりません。いくつかのアイデア。 – LocoMike
私はそれがあなたがしたいことではないのか分かりませんが、getHeaders()メソッドを実装したhttps://gist.github.com/alexmazza/5659606のようなものを作成することができます。私はそこでjacksonを使用していますが、Gsonやその他のものを使用して、そのクラスを認証済みリクエストの基本クラスとして使用することができます。 – alex
ええ、JSONデータを取得したい場合は、ロジックを複製するか、ヘッダーコードを持つ基本クラスを作成し、2つのサブクラスを作成する必要があり、デフォルトのJsonRequestなどを使用することはできません。レスポンスのように見え、リクエストは異なるクラスにある必要があります(解析はListenerに属している必要があります)。継承の問題! ;)とにかく返事をありがとう。 – LocoMike