首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android Volley NoConnectionError: java.io.InterruptedIOException

Android Volley NoConnectionError: java.io.InterruptedIOException
EN

Stack Overflow用户
提问于 2015-09-11 08:20:01
回答 2查看 5K关注 0票数 3

下面的代码可以使用volley向web服务提出请求:

代码语言:javascript
运行
复制
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);

我已经将OkHttpStack.java实现为像这样

代码语言:javascript
运行
复制
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);
    }
}

有时我会犯以下错误:

代码语言:javascript
运行
复制
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

如何克服?如果我得到这个错误,有什么办法重新排序吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-11 08:37:57

在此之前,我正在做另一个请求,实际上这是错误的。我将上面的requestQueue代码也实现到该代码中,现在没有出现错误。(我的)上面的代码很酷。

票数 2
EN

Stack Overflow用户

发布于 2015-09-11 08:39:48

尝试按以下方式使用此代码:

代码语言:javascript
运行
复制
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);
    }
}

您可以引用我的代码来实现OkHttpStack

*更新:

也许您可以在自定义requestQueue代码时进行检查。您在代码中添加了requestQueue.start()吗?如果您这样做了,那么它肯定会显示interruptedioexception

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32518809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档