大佬教程收集整理的这篇文章主要介绍了在android中发送多方或JSON数据时改进SocketTimeOutException,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
改造界面
@multipart @POST("/api/v1/protected/updateprofile") void uploadPhoto(@Part("name") String name,@Part("image") TypedFile file,CallBACk<ApiResponseModel> callBACk);
适配器代码
private RestApi restApi; RestAdapter restAdapter = new RestAdapter.builder().setClient(new OkClient(getClient())).setConverter(new GsonConverter(gson)).setrequesTinterceptor(interceptor).setLogLevel(RestAdapter.LogLevel.FULL).setEndpoint(Config.baseUrl).build(); restApi = restAdapter.create(RestApi.class);
D/Retrofit﹕ ---- ERROR http://www.example.com/api/v1/protected/addfriends 11-05 11:22:18.594 13384-15325/com.veddislabs.plicx D/Retrofit﹕ java.io.InterruptedioException: timeout at okio.Asynctimeout.exit(Asynctimeout.java:258) at okio.Asynctimeout$2.read(Asynctimeout.java:215) at okio.RealBufferedsource.indexOf(RealBufferedsource.java:206) at okio.RealBufferedsource.readUtf8LineStrict(RealBufferedsource.java:153) at com.squareup.okhttp.internal.http.httpconnection.readResponse(httpconnection.java:189) at com.squareup.okhttp.internal.http.httpTransport.readResponseHeaders(httpTransport.java:101) at com.squareup.okhttp.internal.http.httpENGIne.readResponse(httpENGIne.java:676) at com.squareup.okhttp.internal.huc.httpURLConnectionImpl.execute(httpURLConnectionImpl.java:426) at com.squareup.okhttp.internal.huc.httpURLConnectionImpl.getResponse(httpURLConnectionImpl.java:371) at com.squareup.okhttp.internal.huc.httpURLConnectionImpl.getResponseCode(httpURLConnectionImpl.java:466) at retrofit.client.UrlConnectionClient.readResponse(UrlConnectionClient.java:73) at retrofit.client.UrlConnectionClient.execute(UrlConnectionClient.java:38) at retrofit.RestAdapter$RestHandler.invokerequest(RestAdapter.java:321) at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220) at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278) at retrofit.CallBACkRunnable.run(CallBACkRunnable.java:42) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) at retrofit.Platform$Android$2$1.run(Platform.java:142) at java.lang.Thread.run(Thread.java:856) Caused by: java.net.socketException: Socket closed at libcore.io.Posix.recvfromBytes(Native Method) at libcore.io.Posix.recvfrom(Posix.java:136) at libcore.io.blockGuardOs.recvfrom(BlockGuardOs.java:164) at libcore.io.IoBridge.recvfrom(IoBridge.java:513) at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488) at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46) at java.net.PlainSocketImpl$PlainSockeTinputStream.read(PlainSocketImpl.java:240) at okio.okio$2.read(Okio.java:136) at okio.Asynctimeout$2.read(Asynctimeout.java:211) at okio.RealBufferedsource.indexOf(RealBufferedsource.java:206) at okio.RealBufferedsource.readUtf8LineStrict(RealBufferedsource.java:153) at com.squareup.okhttp.internal.http.httpconnection.readResponse(httpconnection.java:189) at com.squareup.okhttp.internal.http.httpTransport.readResponseHeaders(httpTransport.java:101) at com.squareup.okhttp.internal.http.httpENGIne.readResponse(httpENGIne.java:676) at com.squareup.okhttp.internal.huc.httpURLConnectionImpl.execute(httpURLConnectionImpl.java:426) at com.squareup.okhttp.internal.huc.httpURLConnectionImpl.getResponse(httpURLConnectionImpl.java:371) at com.squareup.okhttp.internal.huc.httpURLConnectionImpl.getResponseCode(httpURLConnectionImpl.java:466) at retrofit.client.UrlConnectionClient.readResponse(UrlConnectionClient.java:73) at retrofit.client.UrlConnectionClient.execute(UrlConnectionClient.java:38) at retrofit.RestAdapter$RestHandler.invokerequest(RestAdapter.java:321) at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220) at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278) at retrofit.CallBACkRunnable.run(CallBACkRunnable.java:42) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) at retrofit.Platform$Android$2$1.run(Platform.java:142) at java.lang.Thread.run(Thread.java:856)
private OkhttpClient getClient() { OkhttpClient client = new OkhttpClient(); client.setConnectTimeout(30,TimeUnit.SECONDS); client.setReadTimeout(30,TimeUnit.SECONDS); return client; }
private OkhttpClient getClient() { OkhttpClient client = new OkhttpClient(); client.setConnectTimeout(5,TimeUnit.minutES); client.setReadTimeout(5,TimeUnit.minutES); return client; }
对于Okhttp3
private OkhttpClient getClient() { OkhttpClient client = new OkhttpClient.builder() .connectTimeout(5,TimeUnit.minutES) .readTimeout(5,TimeUnit.minutES) .build(); return client; }
以上是大佬教程为你收集整理的在android中发送多方或JSON数据时改进SocketTimeOutException全部内容,希望文章能够帮你解决在android中发送多方或JSON数据时改进SocketTimeOutException所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。