com.android.volley.NoConnectionError:java.io.EOFException [英] 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屋!