Я пытаюсь получить ресурс из моей службы 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-клиенте. Если кто-то может предложить какой-то совет, было бы полезно!