2016-08-09 25 views
1

目前,當我嘗試提出獲取請求時,必須先進行認證。所以在網上看起來我似乎需要使用getHeaders()並使用散列表來提交我的憑證。但是我的頭部有一些額外的信息需要發送出去。排球認證標頭

我的頭看起來是這樣的: enter image description here

我不知道這個問題可能是什麼。我覺得即時通訊發送所有正確的信息。

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'爲方法參數類型字符串「}

+0

你在瀏覽器中測試REST URL可能是不正確的方式(你的瀏覽器將不會發送任何唯一的標題,如「用戶tz:-330「),如果你只是嘗試去瀏覽器中的API URL。所以你可能不會正確地「調試」它。儘管如此,您的Android代碼看起來是正確的,只要設置請求標頭即可。在過去,我使用過'Map headers = new ArrayMap <>()',但我認爲這不應該有所作爲。我想再次檢查你正在嘗試使用的服務的API文檔。 – Brian

+0

@Adlip解決此問題的任何解決方案? –

回答

1

您的代碼似乎是正確的。您可以嘗試在日誌中查找某些內容。當我處理類似問題時,我發現

W /系統:忽略頭sessionID,因爲它的值爲空。

在我的日誌

,究竟是什麼非常有益的