2015-04-06 4 views
3

Iam call web service in android. в том, что я хочу, чтобы вызвать URL я не посылая никакого Params к серверу, просто вызывая URL,BasicNetwork.performRequest: Неожиданный код ответа 401 андроид Библиотека волейбола

Но его получает ошибку, как [10520] BasicNetwork.performRequest: Неожиданный код ответа 401

моих код

RequestQueue queue = Volley.newRequestQueue(getActivity()); 
    JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, Server.URL, null, 
      new Response.Listener<JSONObject>() 
      { 
       @Override 
       public void onResponse(JSONObject response) { 
           // display response  
        hideProgressDialog(); 

       } 
      }, 
      new Response.ErrorListener() 
      { 
       @Override 
       public void onErrorResponse(VolleyError error) {   
        hideProgressDialog(); 
       } 
      } 
     ); 

     // add it to the RequestQueue 
     queue.add(getRequest); 

Как это решить?

ответ

1

HTTP 401 означает, что веб-сайт требует аутентификации, и он не был предоставлен или он не прошел. Вам нужно пройти аутентификацию. Неизвестно, нужно ли вам предоставлять базовую проверку подлинности HTTP или если у веб-службы есть специальная проверка подлинности и она просто умна с ее возвращаемым значением.

+0

Я звоню в веб-службу входа с json params, работая над ним после того, как веб-служба входа в систему вышла из-под контроля. любое предположение ??? – John

+0

Мне нужно добавить файлы cookie в заголовок волейбола ??? – John

+0

Да, из этих изображений нужна аутентификация –

0

Эта ошибка означает, что вам необходимо пройти аутентификацию. Вы можете сделать это, добавив getHeaders() к коду, так это выглядит следующим образом:

RequestQueue queue = Volley.newRequestQueue(getActivity()); 
JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, Server.URL, null, 
     new Response.Listener<JSONObject>() 
     { 
      @Override 
      public void onResponse(JSONObject response) { 
       // display response  
       hideProgressDialog(); 

      } 
     }, 
     new Response.ErrorListener() 
     { 
      @Override 
      public void onErrorResponse(VolleyError error) {   
       hideProgressDialog(); 
      } 
     } 

    @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
     HashMap<String, String> params = new HashMap<String, String>(); 
     params.put("Content-Type", "application/json"); 
     String creds = String.format("%s:%s","username","password"); 
     String auth = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.DEFAULT); 
     params.put("Authorization", auth); 
     return params; 

     } 

    ); 

queue.add(getRequest); 
1

Если мы используем POST вместо GET или GET вместо POST женихов будет происходить эту ошибку

Итак, смените GET на сообщение в этой строке

JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, Server.URL, null, new Response.Listener<JSONObject>() 
Смежные вопросы