1
目前,當我嘗試提出獲取請求時,必須先進行認證。所以在網上看起來我似乎需要使用getHeaders()並使用散列表來提交我的憑證。但是我的頭部有一些額外的信息需要發送出去。排球認證標頭
我不知道這個問題可能是什麼。我覺得即時通訊發送所有正確的信息。
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, urlJsonObj, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
// JSONObject jsonArray = response.getJSONObject("response_message");
String message = response.getString("response_message");
Toast.makeText(getActivity(),
message,
Toast.LENGTH_LONG).show();
} catch (JSONException e1) {
e1.printStackTrace();
}
}
}
,
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Volley", "Error");
}
}
) {
@Override
public Map getHeaders() throws AuthFailureError {
Map headers = new HashMap<>();
String credentials = "ezhu:[email protected]";
String auth = "Basic "
+ Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
headers.put("Content-Type", "application/json");
headers.put("Authorization", auth);
headers.put("user-tz", "-330");
return headers;
}
};
requestQue.add(jsonObjectRequest);
}
我在我的日誌中收到401錯誤,它給了我URL。當我點擊URL打開我的瀏覽器選項卡,並顯示以下內容:
{「ERROR_MESSAGE」:「缺少請求方法參數」,「ERROR_CODE」:「1」,「錯誤」:「缺少請求頭'user-tz'爲方法參數類型字符串「}
你在瀏覽器中測試REST URL可能是不正確的方式(你的瀏覽器將不會發送任何唯一的標題,如「用戶tz:-330「),如果你只是嘗試去瀏覽器中的API URL。所以你可能不會正確地「調試」它。儘管如此,您的Android代碼看起來是正確的,只要設置請求標頭即可。在過去,我使用過'Map headers = new ArrayMap <>()',但我認爲這不應該有所作爲。我想再次檢查你正在嘗試使用的服務的API文檔。 –
Brian
@Adlip解決此問題的任何解決方案? –