使用用户名和密码的Android Volley GET请求失败



以下Android Volley GET请求失败,并显示以下错误消息:

E/Volley: [1038] BasicNetwork.performRequest: Unexpected response code 401 for 

这是请求:

RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
final String url = "https://xxxxxxxx/storage/v1/items";
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET,url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
StringBuilder formattedResult = new StringBuilder();
JSONArray responseJSONArray = response.getJSONArray("items");
for (int i = 0; i < responseJSONArray.length(); i++) {
formattedResult.append("n" + responseJSONArray.getJSONObject(i).get("no") + "=> t" + responseJSONArray.getJSONObject(i).get("ean")
+ "=> t" + responseJSONArray.getJSONObject(i).get("name")
+ "=> t" + responseJSONArray.getJSONObject(i).get("type")
+ "=> t" + responseJSONArray.getJSONObject(i).get("destruction")
+ "=> t" + responseJSONArray.getJSONObject(i).get("archived")
);
}
txtShowTextResult.setText("List of Items n" + " Number" + "t EAN n" +
"t Name n" +  "t Type n" + formattedResult);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
txtShowTextResult.setText("An Error occured while making the request");
}
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;
}
});
requestQueue.add(jsonObjectRequest);

我不确定为什么请求失败,因为我是安卓Volley的新手。

可能的原因:方法getHeaders((没有被调用,但我不知道在Request中把method调用放在哪里,因此,如果有任何帮助、提示或反馈,我将不胜感激。提前感谢!

添加代码中缺少的部分,您可以尝试以下操作。注意getHeadersoverride部分,让我知道它是如何进行的。

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//handle response
}
}
, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//handle error
}
}){
@NotNull
@Override
public Map<String, String> getHeaders() {
//Handle headers inside here
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;
}
};
requestQueue.add(jsonObjectRequest);

最新更新