【发布时间】:2016-03-22 11:28:11
【问题描述】:
在我的 Android 应用程序中,我必须调用一个看起来像这样的网络服务
http://mywesite.com/demo/mob/getmenubycategory/1
我正在使用 volley 发送请求,但结果是 VolleyError 401。
我已经重写了getParams() 方法来添加标题,但是它不起作用。
这是我的代码。
RequestQueue requestQueue = volleySingleton.getRequestQueue();
requestQueue.add(new JsonObjectRequest(Request.Method.GET, url, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.e(TAG, "onResponse = \n " + response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "response error \n" + error.networkResponse.statusCode);
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
try {
Map<String, String> map = new HashMap<String, String>();
String key = "Authorization";
String encodedString = Base64.encodeToString(String.format("%s:%s", "USERNAME", "Password").getBytes(), Base64.NO_WRAP);
String value = String.format("Basic %s", encodedString);
map.put(key, value);
return map;
} catch (Exception e) {
Log.e(TAG, "Authentication Filure" );
}
return super.getParams();
}
});
当我使用浏览器时,它会显示一个对话框来输入我的用户名和密码。如何使用 Volley 将用户名和密码与请求一起发送。
【问题讨论】:
-
你有错误日志吗?
-
不,它只是在
onErrorResponse(VolleyError error)中记录401 -
您是否尝试打印
error? -
是的,我试过但没用。只获取状态码
标签: android authentication android-volley basic-authentication