android– 改造okhttp获取随机eofexception

android– 改造okhttp获取随机eofexception,第1张

概述我正在调用一个调用RESTWS的Android应用程序.服务本身工作正常(使用Postman测试)但我偶尔会从Android获得此异常::java.io.IOException:unexpectedendofstreamoncom.squareup.okhttp.Address@2cd22e9datcom.squareup.okht

我正在调用一个调用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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1117282.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存