2015-06-18 3 views
2

Следующий мой код. Я получаю com.android.volley.NoConnectionError: java.io.InterruptedIOException в первый раз, и во второй раз он отлично работает. Ответ сервера тоже прекрасен, ошибки на стороне сервера нет.NoConnectionError in android volley

RequestQueue queue = Volley.newRequestQueue(MainActivity.this); 

    JsonObjectRequest request = new JsonObjectRequest(URL, null, 
      new Listener<JSONObject>() { 

       @Override 
       public void onResponse(JSONObject responseJsonObject) { 
        try { 
         if (responseJsonObject.has("user") 
           && !responseJsonObject 
             .isNull("user")) { 
           user.jsonParser(responseJsonObject 
            .getJSONObject("user")); 
         } 
        } catch (JSONException exception) { 
         Toast.makeText(context, "Error Occured", 
           Toast.LENGTH_SHORT).show(); 
        } 
       } 
      }, new ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError volleyError) { 
        progressDialog.dismiss(); 
        Log.d("Volley Error", volleyError.toString()); 
        Toast.makeText(context, "Connectivity Error", 
          Toast.LENGTH_SHORT).show(); 
       } 
      }); 

    queue.add(request); 
    progressDialog.show(); 
    queue.start(); 
+0

Вы можете разместить точный журнал, что может быть полезным. Например: com.android.volley.NoConnectionError: java.io.IOException: не обнаружены проблемы с проверкой подлинности –

+0

com.android.volley.NoConnectionError: java.io.InterruptedIOException –

+1

Извините, приятель, не знаю .. Просто проверьте, не поможет ли это: http://stackoverflow.com/questions/18686671/com-android-volley-noconnectionerror-after-pausing-app –

ответ

0

У меня была та же проблема. Вопрос Vamsi referenced имеет обходное решение с использованием OkHttp, которое вы используете, если используете OkHttp как стек в залпе (см. Также комментарии в этом вопросе on how to use OkHttp in volley).

Однако, здесь еще одна Hacky решение, которое не связано с использованием другой библиотеки:

final RequestQueue requestQueue = getRequestQueue(); 

final class ErrorFirstTimeHack { 
    boolean first_time = true; 
    MyVolleyJsonObjectRequest request = null; 
} 
final ErrorFirstTimeHack errorFirstTimeHack = new ErrorFirstTimeHack(); 
final MyVolleyJsonObjectRequest request = buildRequestObject(
    Request.Method.GET, 
    url, 
    new Response.Listener() { 
     @Override 
     public void onResponse(Object response) { 
      // normal success processing 
     } 
    }, 
    new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      if (error instanceof com.android.volley.NoConnectionError) { 
       if (errorFirstTimeHack.first_time) { 
        errorFirstTimeHack.first_time = false; 
        requestQueue.add(errorFirstTimeHack.request); 
        return; 
       } 
      } 
      // normal error processing 
     } 
    } 
); 
errorFirstTimeHack.request = request; 
requestQueue.add(request); 
Смежные вопросы