[Android Exception 1A] -com.android.volley.NoConnectionError: java.io.InterruptedIOException

摘要:
//mQueue.start();其实,在RequestQueue实例化的时候,就已经有start了。
12-24 14:21:47.470 24220-24220/com.tongyan.tutelage W/System.err: com.android.volley.NoConnectionError: java.io.InterruptedIOException
12-24 14:21:47.470 24220-24220/com.tongyan.tutelage W/System.err:     at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:125)
12-24 14:21:47.470 24220-24220/com.tongyan.tutelage W/System.err:     at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:105)
12-24 14:21:47.470 24220-24220/com.tongyan.tutelage W/System.err: Caused by: java.io.InterruptedIOException
12-24 14:21:47.470 24220-24220/com.tongyan.tutelage W/System.err:     at com.android.okio.Deadline.throwIfReached(Deadline.java:56)
12-24 14:21:47.470 24220-24220/com.tongyan.tutelage W/System.err:     at com.android.okio.Okio$1.write(Okio.java:67)
12-24 14:21:47.470 24220-24220/com.tongyan.tutelage W/System.err:     at com.android.okio.RealBufferedSink.flush(RealBufferedSink.java:154)
12-24 14:21:47.470 24220-24220/com.tongyan.tutelage W/System.err:     at com.android.okhttp.internal.http.HttpConnection.flush(HttpConnection.java:130)
12-24 14:21:47.470 24220-24220/com.tongyan.tutelage W/System.err:     at com.android.okhttp.internal.http.HttpTransport.flushRequest(HttpTransport.java:73)
12-24 14:21:47.470 24220-24220/com.tongyan.tutelage W/System.err:     at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:626)
12-24 14:21:47.470 24220-24220/com.tongyan.tutelage W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:388)
12-24 14:21:47.470 24220-24220/com.tongyan.tutelage W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:332)
12-24 14:21:47.470 24220-24220/com.tongyan.tutelage W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:500)
12-24 14:21:47.470 24220-24220/com.tongyan.tutelage W/System.err:     at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:109)
12-24 14:21:47.470 24220-24220/com.tongyan.tutelage W/System.err:     at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:93)
12-24 14:21:47.470 24220-24220/com.tongyan.tutelage W/System.err:     ... 1 more

这个错误是你在不经意间导致的,或者是没有很好的去熟悉volley包的api导致的。

public voidonRequest(String url){
        if(isIntnetConn){
            StringRequest request = new StringRequest(url, new Response.Listener<String>() {
                @Override
                public voidonResponse(String s) {
                    mListener.onSuccess(s);
                }
            }, newResponse.ErrorListener() {
                @Override
                public voidonErrorResponse(VolleyError volleyError) {
                    String errorMsg = "";
                    if(volleyError instanceof TimeoutError) {
                        mListener.onError();
                    } else if(volleyError instanceof ServerError) {
                        mListener.onError();
                    } else{
                        mListener.onError();
                        errorMsg = mContext.getResources().getString(R.string.request_error);
                    }
                }
            });
            request.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 0, 1.0f));//设置超时时间
mQueue.add(request);
            //mQueue.start();
        }else{
            Toast.makeText(mContext, "当前的网络连接不可用", Toast.LENGTH_SHORT).show();
            mListener.onIntnetDisConn();
        }
    }

只是因为加了下面这句,bug如期而至。

//mQueue.start();

其实,在RequestQueue实例化的时候,就已经有start了。

privateRequestQueue mQueue;
privateContext mContext;
publicHttpServiceUtils(HttpResquestListener listener,Context context){
       mListener =listener;
       mContext =context;
       mQueue  =Volley.newRequestQueue(context);
}
public classVolley {
    private static final String DEFAULT_CACHE_DIR = "volley";
    publicVolley() {
    }
    public staticRequestQueue newRequestQueue(Context context, HttpStack stack) {
        File cacheDir = new File(context.getCacheDir(), "volley");
        String userAgent = "volley/0";
        try{
            String network =context.getPackageName();
            PackageInfo queue = context.getPackageManager().getPackageInfo(network, 0);
            userAgent = network + "/" +queue.versionCode;
        } catch(NameNotFoundException var6) {
            ;
        }
        if(stack == null) {
            if(VERSION.SDK_INT >= 9) {
                stack = newHurlStack();
            } else{
                stack = newHttpClientStack(AndroidHttpClient.newInstance(userAgent));
            }
        }
        BasicNetwork network1 = newBasicNetwork((HttpStack)stack);
        RequestQueue queue1 = new RequestQueue(newDiskBasedCache(cacheDir), network1);
        queue1.start();
        returnqueue1;
    }
    public staticRequestQueue newRequestQueue(Context context) {
        return newRequestQueue(context, (HttpStack)null);
    }
}

queue1.start(); 已经在实例化RequestQueue的时候,就被调用了。

https://stackoverflow.com/questions/31158858/random-com-android-volley-noconnection-error-java-io-interruptedioexception-st/31181611#31181611

免责声明:文章转载自《[Android Exception 1A] -com.android.volley.NoConnectionError: java.io.InterruptedIOException》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇解决初次使用webpack+antd-mobile时css不生效的问题css简单实现五角星评分、点赞收藏、展示评分(半颗星、1/3颗星)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

java获取本机ip,mac,

1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader; 4 5 /** 6 * 获取MAC地址 7 * @author sunlightcs 8...

解决Flink消费Kafka信息,结果存储在Mysql的重复消费问题

背景 最近项目中使用Flink消费kafka消息,并将消费的消息存储到mysql中,看似一个很简单的需求,在网上也有很多flink消费kafka的例子,但看了一圈也没看到能解决重复消费的问题的文章,于是在flink官网中搜索此类场景的处理方式,发现官网也没有实现flink到mysql的Exactly-Once例子,但是官网却有类似的例子来解决端到端的仅一...

使用阿里ARouter路由实现组件化(模块化)开发流程

Android平台中对页面、服务提供路由功能的中间件,我的目标是 —— 简单且够用。 这是阿里对Arouter的定位,那么我们一起来梳理一下Arouter使用流程,和使用中我所遇到的一些问题! 先来看看有哪些功能 模块化的要解决的问题 模块间页面跳转(路由); 模块间事件通信; 模块间服务调用; 模块的独立运行; 模块间页面跳转路由拦截(登录) 其...

ueditor 文件上传的分析和总结

正式开始之前,先写两个常用又容易被我忘掉的文件和流相互转化的方法。 1,文件转流 FileStream fs = new FileStream(filename,FileMode.Open,FileAccess.Read); byte[] infbytes = new byte[(int)fs.Length]; fs.Read(infbytes, 0, i...

java HttpURLConnection 接口文件传输文件上传

1 public String uploadImg(MultipartFile imgFile, String uploadUrl) throws Exception { 2 3 URL url = new URL(uploadUrl); 4 HttpURLConnection conn = (HttpURL...

java 增强for循环与泛型

一 增强for循环   增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部 原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。 格式: for(元素的数据类型 变量 : Collection集合or数组){ }   它用于遍历Collection和数组。通常只进行遍历元素,不要...