私は、Volleyライブラリを使用してAndroidアプリケーションでGETリクエストを作成しようとしています。このGET要求は、基本HTTP認証を使用してアカウントの資格情報を確認することです。私は成功したXMLを返すので、資格情報を持つURLがブラウザで動作することを確認しました。形式は次のとおりです。username
とpassword
は明らかに実際のユーザーの資格情報を表すVolley throwing AuthFailureError(401)with Basic HTTP認証
http://username:[email protected]/api/account/verify_credentials.xml
。バレーボールは、このエラーがスローされます。ここでは
BasicNetwork.performRequest: Unexpected response code 401 for http://username:[email protected]/api/account/verify_credentials.xml
が要求を処理する私のAndroidのコードです: How does one use Basic Authentication with Volley on Android?:getHeadersを上書きする
private static final String HTTP_PRE = "http://";
private static final String VERIFY_CREDENTIALS = "myanimelist.net/api/account/verify_credentials.xml";
public void verifyCredentials(String username, String password) {
RequestQueue queue = Volley.newRequestQueue(context);
String url = HTTP_PRE + username + ":" + password + "@" + VERIFY_CREDENTIALS;
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
processResponse(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// handle error
Log.d(TAG, "error: " + error.getMessage());
}
});
queue.add(stringRequest);
}
この溶液()メソッドは、同じ結果を提供します。
ここは、そのソリューションの私の実装です:
URLに直接組み込まれた資格情報なしに、このエラーが返さ@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = super.getHeaders();
if (params == null){
params = new HashMap<>();
}
String creds = String.format("%s:%s", username, password);
params.put("Authorization", creds);
return params;
}
:
BasicNetwork.performRequest: Unexpected response code 401 for http://myanimelist.net/api/account/verify_credentials.xml
を誰かがアドバイスを提供することができれば、私は本当に感謝しますそれ。これは初めての基本的なHTTP認証を使用しているので、わかりやすいものが見つからない可能性があります。