gpt4 book ai didi

android - 使用 Volley 请求发送认证信息

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:50:13 24 4
gpt4 key购买 nike

在我的 Android 应用程序中,我必须调用如下所示的 Web 服务

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

我正在使用 volley 发送请求,但结果是 VolleyError 401。我已经覆盖了 getParams() 方法来添加 header ,但它不起作用。

这是我的代码。

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 将用户名和密码与请求一起发送。

最佳答案

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

@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> 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;
}

希望对您有所帮助!

关于android - 使用 Volley 请求发送认证信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34310134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com