当前位置:  开发笔记 > 编程语言 > 正文

使用Volley请求发送身份验证信息

如何解决《使用Volley请求发送身份验证信息》经验,为你挑选了1个好方法。

在我的Android应用程序中,我必须调用一个看起来像这样的Web服务

http://mywesite.com/demo/mob/getmenubycategory/1

我正在使用截击发送请求但结果是VolleyError 401.我已经覆盖了getParams()添加标题的方法,但它无法正常工作.

这是我的代码.

RequestQueue requestQueue = volleySingleton.getRequestQueue();
    requestQueue.add(new JsonObjectRequest(Request.Method.GET, url, new Response.Listener() {
        @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 getParams() throws AuthFailureError {
            try {
                Map map = new HashMap();
                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发送用户名和密码.



1> BNK..:

对于身份验证,恕我直言,你应该覆盖getHeaders而不是getParams,请尝试以下:

@Override
public Map getHeaders() throws AuthFailureError {
       Map headers = new HashMap<>();                
       String credentials = "username:password";
       String auth = "Basic "
                        + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
       headers.put("Content-Type", "application/json");
       headers.put("Authorization", auth);
       return headers;
}

希望能帮助到你!


谢谢!使用`getHeaders()`而不是`getParams()`解决了我的问题.
推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有