com.android.volley.NoConnectionError:java.io.EOFException [英] com.android.volley.NoConnectionError: java.io.EOFException

查看:153
本文介绍了com.android.volley.NoConnectionError:java.io.EOFException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用volley库进行网络呼叫.对于这样的一次呼叫,我得到了:

I am using volley library for network calls.For one such call,I am getting :

com.android.volley.NoConnectionError:java.io.EOFException

com.android.volley.NoConnectionError: java.io.EOFException

下面是我的代码:

 public void loadSearchList(final String mName){

        String url;
        int mainval;
        if(product.getMain()==1){
            mainval=2;
        }
        else{
              mainval=1;
        }

url = Constants.productListUrlStr +?" +"_ supplier" +"=" + globalProvider.contract._supplier +&" +"main" +"=" + mainval +&" +名称" +"= "+ mName;

url=Constants.productListUrlStr+"?"+"_supplier"+"="+globalProvider.contract._supplier+"&"+"main"+"="+mainval+"&"+"name"+"="+mName;

        Map<String,String> params=new HashMap<>();
        params.put("_supplier",globalProvider.contract._supplier);
        params.put("name",mName);
        params.put("main",String.valueOf(mainval));

        Log.d("checksearchurl",url);

        Utf8JsonRequest utf8JsonRequest=new Utf8JsonRequest(Request.Method.GET, url, new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                Log.d("checkresponse",response);
                parseSearchList(response,mName);

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.d("checeee",error.toString());

            }
        }
        )
        {

            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> headers = new HashMap<>();
                headers.put("Authorization", Constants.getToken(ProductDetailActivity.this));
                headers.put("language","english");

               // headers=globalProvider.addHeaderToken(ProductDetailActivity.this);
              //  Log.d("checklangheader",headers.get("Language"));



                //headers=globalProvider.addHeaderToken(getActivity());
                return headers;
            }
            @Override
            public Request.Priority getPriority() {
                Request.Priority mPriority = Request.Priority.HIGH;
                return mPriority;
            }


        };
        globalProvider.addRequest(utf8JsonRequest);


    }

This is my Utf8JsonRequest:
public class Utf8JsonRequest extends StringRequest {
    private Priority priority;
    private Response.Listener<String> listener;
    public Utf8JsonRequest(int method, String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {
        super(method, url,listener, errorListener);
        this.listener=listener;

    }

    public Utf8JsonRequest(String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {
        super(url, listener, errorListener);
        this.listener=listener;
    }
    @Override
    protected Response<String> parseNetworkResponse (NetworkResponse response) {
        try {
            String utf8String = new String(response.data, "UTF-8");
            return Response.success(new String(utf8String), HttpHeaderParser.parseCacheHeaders(response));
        } catch (UnsupportedEncodingException e) {
            // log error
            return Response.error(new ParseError(e));
        }
    }
    @Override
    protected void deliverResponse(String response) {
        // TODO Auto-generated method stub
        listener.onResponse(response);
    }
    public void setPriority(Priority priority) {
        this.priority = priority;
    }
    @Override
    public Priority getPriority() {
        return priority;
    }
}

我必须构造如下网址:

this:url=Constants.productListUrlStr+"?"+"_supplier"+"="+
globalProvider.contract._supplier+"&"+"main"+"="+mainval+"&"+"name"+"="+mName

如果我传递参数,则得到的代码是400 error. 我对选择凌空而不是翻新的决定表示pent悔.

If I pass params than I get code 400 error. I am repenting my decision of choosing volley over retrofit.

推荐答案

在奋斗了几个小时之后,发现了问题所在. 问题在于网址.如果我要搜索紫色地瓜",它会抛出上述错误. 所以我这样构造了我的网址:

After struggling for few hours, found the issue. Issue was with url.If I wanted to search "purple sweet potato",it was throwing the above error. So I constructed my url like this:

url = Constants.productListUrlStr +?" +"_ supplier" +"=" + globalProvider.contract._supplier +&" +"main" +"=" + mainval +&" +"name" +"=" + mName

url=Constants.productListUrlStr+"?"+"_supplier"+"="+ globalProvider.contract._supplier+"&"+"main"+"="+mainval+"&"+"name"+"="+mName

String requestURL = String.format(url +&" +"name =%s",Uri.encode(mName)); 现在可以正常工作了.

String requestURL = String.format(url+"&"+"name=%s", Uri.encode(mName)); And now it works fine.

这篇关于com.android.volley.NoConnectionError:java.io.EOFException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆