
我正在调用一个调用REST WS的Android应用程序.服务本身工作正常(使用Postman测试)但我偶尔会从AndroID获得此异常:
: java.io.IOException: unexpected end of stream on com.squareup.okhttp.Address@2cd22e9d at com.squareup.okhttp.internal.http.http1xStream.readResponse(http1xStream.java:201) at com.squareup.okhttp.internal.http.http1xStream.readResponseheaders(http1xStream.java:127) at com.squareup.okhttp.internal.http.httpEngine.readNetworkResponse(httpEngine.java:737) at com.squareup.okhttp.internal.http.httpEngine.access0(httpEngine.java:87) at com.squareup.okhttp.internal.http.httpEngine$NetworkInterceptorChain.proceed(httpEngine.java:722) at com.squareup.okhttp.internal.http.httpEngine.readResponse(httpEngine.java:576) at com.squareup.okhttp.Call.getResponse(Call.java:287) at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:243) at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:205) at com.squareup.okhttp.Call.execute(Call.java:80) at retrofit.clIEnt.OkClIEnt.execute(OkClIEnt.java:53) at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:326) at retrofit.RestAdapter$RestHandler.access0(RestAdapter.java:220) at retrofit.RestAdapter$RestHandler.obtainResponse(RestAdapter.java:278) at retrofit.CallbackRunnable.run(CallbackRunnable.java:42) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at retrofit.Platform$AndroID.run(Platform.java:142) at java.lang.Thread.run(Thread.java:818) Caused by: java.io.EOFException: \n not found: size=0 content=... at okio.RealBufferedSource.readUtf8linestrict(RealBufferedSource.java:201) at com.squareup.okhttp.internal.http.http1xStream.readResponse(http1xStream.java:186) at com.squareup.okhttp.internal.http.http1xStream.readResponseheaders(http1xStream.java:127) at com.squareup.okhttp.internal.http.httpEngine.readNetworkResponse(httpEngine.java:737) at com.squareup.okhttp.internal.http.httpEngine.access0(httpEngine.java:87) at com.squareup.okhttp.internal.http.httpEngine$NetworkInterceptorChain.proceed(httpEngine.java:722) at com.squareup.okhttp.internal.http.httpEngine.readResponse(httpEngine.java:576) at com.squareup.okhttp.Call.getResponse(Call.java:287) at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:243) at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:205) at com.squareup.okhttp.Call.execute(Call.java:80) at retrofit.clIEnt.OkClIEnt.execute(OkClIEnt.java:53) at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:326) at retrofit.RestAdapter$RestHandler.access0(RestAdapter.java:220) at retrofit.RestAdapter$RestHandler.obtainResponse(RestAdapter.java:278) at retrofit.CallbackRunnable.run(CallbackRunnable.java:42) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at retrofit.Platform$AndroID.run(Platform.java:142) at java.lang.Thread.run(Thread.java:818) 我在网上找到了一些关于BUG的内容,但我不确定.此外,奇怪的是,有时工作,有时不工作,没有我改变代码中的任何东西.例外情况说明了一个缺少终点线的角色.我必须把它放在URL中吗?这是一些代码.谢谢.
API界面
public interface APIInterface {@headers({"Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzDWIiOiJkb25hdG8iLCJ1c2VySWQiOiIxIiwicm9sZSI6IlJPTEVfQURNSU4ifQ.yNVtQMfMasfR7nfBgtjtmlXMM8Gpfjvf_FDz1sMiaSJxUvLDyC9sjm-XSEkJdfGy4JasfweRrRUGc3gHpMRA", "Accept: application/Json","Content-Type: application/Json;charset=utf-8"})@POST("/todo/getTodoList")public voID getTodoList(@Body BaseRequest request, Callback<GetTodoListResponse> response);}调节器
RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint("http://www.myUrl.com/app/rest").setLogLevel(RestAdapter.LogLevel.FulL).setConverter(new GsonConverter(builder.create())) .setClIEnt(new OkClIEnt(new OkhttpClIEnt())) .build(); APIInterface methods = restAdapter.create(APIInterface.class); Callback<GetTodoListResponse> callback = new Callback<GetTodoListResponse>() { @OverrIDe public voID success(GetTodoListResponse o, Response response) { todoList = o.getTodoList(); Log.d("CardController", "TodoList: " + todoList); if (!o.isOutcome()) { Log.e("CardController", "Error fetching todoList"); todoList = new ArrayList<Todo>(); } else { setChanged(); myMethod(); } } @OverrIDe public voID failure(RetrofitError retrofitError) { Log.e("Retrofit", "Error fetching todoList: ", retrofitError); } }; methods.getTodoList(new AuraBaseRequest(), callback);解决方法:
在我的情况下,服务器端是Spring MVC,我收到了这个错误.由于某些安全检查(500返回状态)而发生此错误,但改造中的错误是意外的流结束.绕过安全检查后,我就能得到响应.
希望将来可能对某人有所帮助.
总结以上是内存溢出为你收集整理的android – 改造okhttp获取随机eofexception全部内容,希望文章能够帮你解决android – 改造okhttp获取随机eofexception所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)