2015-12-11 53 views
0

我在後端使用Node.js,並且需要在GET請求的頭部中發送一些參數(參數)和一個jwt令牌(用於授權)。 我在節點服務器上使用express-jwt模塊。該請求需要在那裏使用jwt令牌進行授權。簡單地將令牌作爲參數發送不起作用。在Volley請求中添加JWT令牌

private void getInfo(final String instanceId, final String token) { 
//token is jwt token 
      StringRequest strReq = new StringRequest(Request.Method.GET, 
        Config.URL_GET_ID_INFO, new Response.Listener<String>() { 

       @Override 
       public void onResponse(String response) { 
        Log.d(TAG, response); 

        try { 
         JSONObject responseObj = new JSONObject(response); 
         boolean error = responseObj.getBoolean("error"); 
         String message = responseObj.getString("message"); 
         if (!error) { 

          Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); 

         } else { 
          Toast.makeText(getApplicationContext(), 
            "Error: " + message, 
            Toast.LENGTH_LONG).show(); 
         } 

         // hiding the progress bar 
         //progressBar.setVisibility(View.GONE); 

        } catch (JSONException e) { 
         Toast.makeText(getApplicationContext(), 
           "Error: " + e.getMessage(), 
           Toast.LENGTH_LONG).show(); 

         // progressBar.setVisibility(View.GONE); 
        } 

       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        Log.e(TAG, "Error: " + error.getMessage()); 
        Toast.makeText(getApplicationContext(), 
          error.getMessage(), Toast.LENGTH_SHORT).show(); 
        //progressBar.setVisibility(View.GONE); 
       } 
      }) { 
       @Override 
       protected Map<String, String> getParams() { 
        Map<String, String> params = new HashMap<String , String>(); 
        params.put("instanceId", instanceId); 

        //Need to send jwt along with params, but do not know how to include it in the request. 
        Log.e(TAG, "Posting params: " + params.toString()); 

        return params; 
       } 



      }; 

      // Adding request to request queue 
      MyApplication.getInstance().addToRequestQueue(strReq); 
     } 

`

+0

你確定服務器沒想到在你的請求頭令牌?在請求正文中發送令牌是非常不尋常的。通常你會做'''RequestObject.addHeader(「auth-token」,token)''' – Devnetics

+0

然後服務器端用'''const token = req.headers [「token」]來驗證。 //繼續處理標記''' – Devnetics

回答

0

只是重寫請求的方法getHeaders()

下面是一個例子:

@Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("Authorization", "Bearer "+ yourToken); 
      return params; 
     }