2015-09-11 1 views
1

J'ai ci-dessous le code pour faire une demande au service Web à l'aide de volley:Android Volley NoConnectionError: java.io.InterruptedIOException

RequestQueue requestQueue = Volley.newRequestQueue(getActivity(),new OkHttpStack()); 
GsonRequest<myData> request = new GsonRequest<myData>(Method.POST,Config.MYPOSTLINK, myData.class, getSuccessListener, getErrorListener); 
request.setParams("Token", token);   
requestQueue.add(request); 

J'ai mis en OkHttpStack.java comme like this:

public class OkHttpStack extends HurlStack { 
    private final OkHttpClient client; 

    public OkHttpStack() { 
     this(new OkHttpClient()); 
    } 

    public OkHttpStack(OkHttpClient client) { 
     if (client == null) { 
      throw new NullPointerException("Client must not be null."); 
     } 
     this.client = client; 
    } 

    @Override protected HttpURLConnection createConnection(URL url) throws IOException { 
     return new OkUrlFactory(client).open(url); 
    } 
} 

Parfois i obtenir l'erreur ci-dessous:

00.482 com.ex W/System.err﹕ com.android.volley.NoConnectionError: java.io.InterruptedIOException: thread interrupted 
00.483 com.ex W/System.err﹕ at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:151) 
00.483 com.ex W/System.err﹕ at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112) 
00.483 com.ex W/System.err﹕ Caused by: java.io.InterruptedIOException: thread interrupted 
00.483 com.ex W/System.err﹕ at com.android.okhttp.okio.Timeout.throwIfReached(Timeout.java:145) 
00.483 com.ex W/System.err﹕ at com.android.okhttp.okio.Okio$1.write(Okio.java:73) 
00.483 com.ex W/System.err﹕ at com.android.okhttp.okio.AsyncTimeout$1.write(AsyncTimeout.java:155) 
00.483 com.ex W/System.err﹕ at com.android.okhttp.okio.RealBufferedSink.flush(RealBufferedSink.java:221) 
00.483 com.ex W/System.err﹕ at com.android.okhttp.internal.http.HttpConnection.flush(HttpConnection.java:141) 
00.483 com.ex W/System.err﹕ at com.android.okhttp.internal.http.HttpTransport.finishRequest(HttpTransport.java:52) 
00.483 com.ex W/System.err﹕ at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:902) 
00.483 com.ex W/System.err﹕ at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:788) 
00.484 com.ex W/System.err﹕ at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:439) 
00.484 com.ex W/System.err﹕ at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384) 
00.484 com.ex W/System.err﹕ at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:497) 
00.484 com.ex W/System.err﹕ at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:109) 
00.484 com.ex W/System.err﹕ at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:96) 
00.484 com.ex W/System.err﹕ ... 1 more 
00.589 com.ex W/System.err﹕ com.android.volley.NoConnectionError: java.io.InterruptedIOException: thread interrupted 
00.589 com.ex W/System.err﹕ at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:151) 
00.589 com.ex W/System.err﹕ at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112) 
00.589 com.ex W/System.err﹕ Caused by: java.io.InterruptedIOException: thread interrupted 
00.589 com.ex W/System.err﹕ at com.android.okhttp.okio.Timeout.throwIfReached(Timeout.java:145) 
00.589 com.ex W/System.err﹕ at com.android.okhttp.okio.Okio$1.write(Okio.java:73) 
00.589 com.ex W/System.err﹕ at com.android.okhttp.okio.AsyncTimeout$1.write(AsyncTimeout.java:155) 
00.589 com.ex W/System.err﹕ at com.android.okhttp.okio.RealBufferedSink.flush(RealBufferedSink.java:221) 
00.589 com.ex W/System.err﹕ at com.android.okhttp.internal.http.HttpConnection.flush(HttpConnection.java:141) 
00.589 com.ex W/System.err﹕ at com.android.okhttp.internal.http.HttpTransport.finishRequest(HttpTransport.java:52) 
00.589 com.ex W/System.err﹕ at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:902) 
00.589 com.ex W/System.err﹕ at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:788) 
00.590 com.ex W/System.err﹕ at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:439) 
00.590 com.ex W/System.err﹕ at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384) 
00.590 com.ex W/System.err﹕ at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:497) 
00.590 com.ex W/System.err﹕ at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:109) 
00.590 com.ex W/System.err﹕ at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:96) 
00.590 com.ex W/System.err﹕ ... 1 more 

Comment surmonter? Un moyen de récupérer si j'ai cette erreur?

Répondre

1

Je faisais une autre requête avant celle-ci et en fait cela donnait une erreur. J'ai implémenté ci-dessus le code requestQueue dans celui-là aussi et aucune erreur maintenant. Le code ci-dessus (le mien) fonctionne cool.

2

Essayez d'utiliser ce code comme suit:

import com.android.volley.toolbox.HurlStack; 
import com.squareup.okhttp.OkHttpClient; 
import com.squareup.okhttp.OkUrlFactory; 

public class OkHttpStack extends HurlStack { 
    private final OkUrlFactory mFactory; 

    public OkHttpStack() { 
     this(new OkHttpClient()); 
    } 

    public OkHttpStack(OkHttpClient client) { 
     if (client == null) { 
      throw new NullPointerException("Client must not be null."); 
     } 
     mFactory = new OkUrlFactory(client); 
    } 
} 

Vous pouvez faire référence à mon code pour mettre en œuvre OkHttpStack

* Mise à jour:

Maybe you can check when you customize the requestQueue code. Did you add requestQueue.start() in your code? If you did it,and then it will show the interruptedioexception certainly.