2015-12-11 4 views
0

Я использую Node.js на бэкэнд, и вам нужно отправить некоторые параметры (параметры) и токен jwt (для авторизации) в заголовке запроса GET. Я использую модуль express-jwt на сервере узлов. Запрос должен быть разрешен с использованием токена jwt. Просто отправка маркера в качестве параметров там не работает.Добавление токена JWT в запросе Volley

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 », токен)' '' – 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; 
     } 
Смежные вопросы