0

Я пытаюсь получить ресурс из моей службы asp .net restful от клиента android. У меня есть MessagesController который имеет метод GetMessages:Использование Android Volley с ASP.NET API для веб-сайтов

[Authorize] 
public IQueryable<Message> GetMessages() 
{ 
    return db.Messages; 
} 

Чтобы получить доступ к этому я послал запрос на /token и получил ключ, который я использую из клиентского приложения для доступа к ресурсу. У меня проблема в том, что клиент получает ошибку 302 http при попытке доступа к ресурсу.

Это метод андроида клиента:

public void setAllSendersAndAllMessages() 
{ 
    String url = "Messages/GetMessages"; 
    showpDialog(); 
    String Url = baseUrl + url; 


    JsonArrayRequest req = new JsonArrayRequest(Url, 
      new Response.Listener<JSONArray>() { 

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

        try { 

         allSenders = new String[response.length()]; 
         allMessages = new String[response.length()]; 
         for (int i = 0; i < response.length(); i++) { 

          JSONObject message = (JSONObject) response.get(i); 

          allSenders[i] = message.getString("sender"); 
          allMessages[i] = message.getString("messageContent"); 
         } 
         setInitialViews(); 

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

        hidepDialog(); 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.d(TAG, "Error: " + error.getMessage()); 
      Toast.makeText(context,error.getMessage(), Toast.LENGTH_SHORT).show(); 
      hidepDialog(); 
     } 
    }){ 
     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      Map<String, String> headers = new HashMap<>(); 
      headers.put("Authorization", "bearer "+ token); 
      return headers; 
     } 
    }; 

    mRequestQueue.add(req); 

} 

Я перекрывая getHeaders() метод для передачи маркеров авторизации службы. Этот ключ и заголовок отлично работают при использовании «Почтальона», но по какой-то неизвестной причине он не работает в Android-клиенте. Если кто-то может предложить какой-то совет, было бы полезно!

ответ

Смежные вопросы