仅在某些Android设备上引发java.net.SocketTimeoutException

尼布兹

我正在尝试从Android设备上载JPEG图像文件。我正在使用square/okhttp库来创建请求。我在Lenovo Yoga平板电脑上遇到此问题,当我尝试上传图像时,出现以下异常。但是,当我在Samsung Galaxy Tab 10“上运行相同的代码时,一切正常,并且图像成功上传。

相机会捕获图像并将其存储在/ storage / emulated / 0 /中,应用将从此处将其拾取并尝试上传。我有一个在后台运行的服务进行上传。

final MediaType MEDIA_TYPE_IMAGE_JPEG = MediaType.parse("image/jpeg");

        File file = new File(path);
        Request request = new Request.Builder()
                .url(baseUrl)
                .addHeader("timestamp", map.get("timestamp"))
                .addHeader("Content-Type", map.get("Content-Type"))
                .post(RequestBody.create(MEDIA_TYPE_IMAGE_JPEG, file))
                .build();

        OkHttpClient client = new OkHttpClient();
        Response response = client.newCall(request).execute();

例外:

java.net.SocketTimeoutException: timeout
11-27 15:37:06.394 1770-2339/com.myapp.app.debug 
W/System.err: at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2
Stream.java:593)
11-27 15:37:06.394 1770-2339/com.myapp.app.debug 
W/System.err: at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.java:601)
11-27 15:37:06.394 1770-2339/com.myapp.app.debug 
W/System.err: at okhttp3.internal.http2.Http2Stream.takeResponseHeaders(Http2Stream.java:146)
11-27 15:37:06.394 1770-2339/com.myapp.app.debug 
W/System.err: at okhttp3.internal.http2.Http2Codec.readResponseHeaders(Http2Codec.java:125)
11-27 15:37:06.394 1770-2339/com.myapp.app.debug 
W/System.err:     at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.java:88)
11-27 15:37:06.394 1770-2339/com.myapp.app.debug 
W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
11-27 15:37:06.394 1770-2339/commyapp.app.debug 
W/System.err:     at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:45)
11-27 15:37:06.394 1770-2339/com.myapp.app.debug 
W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
11-27 15:37:06.394 1770-2339/com.myapp.app.debug 
W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
11-27 15:37:06.395 1770-2339/com.myapp.app.debug 
W/System.err:     at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
11-27 15:37:06.395 1770-2339/com.myapp.app.debug 
 W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
 11-27 15:37:06.395 1770-2339/com.myapp.app.debug 
 W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
 11-27 15:37:06.395 1770-2339/com.myapp.app.debug 
W/System.err:     at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
11-27 15:37:06.395 1770-2339/com.myapp.app.debug 
W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
11-27 15:37:06.395 1770-2339/com.myapp.app.debug 
W/System.err:     at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:125)
 11-27 15:37:06.395 1770-2339/com.myapp.app.debug 
  W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
11-27 15:37:06.395 1770-2339/com.myapp.app.debug 
 W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
11-27 15:37:06.395 1770-2339/com.myapp.app.debug 
 W/System.err:     at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
  11-27 15:37:06.395 1770-2339/com.myapp.app.debug 
  W/System.err:     at okhttp3.RealCall.execute(RealCall.java:77)
普罗卡什·萨卡(Prokash Sarkar)

您必须增加服务器端的读/写超时。Android的临时解决方法是增加OkHttp3客户端的默认超时:

OkHttpClient client = new OkHttpClient.Builder()
        .connectTimeout(60, TimeUnit.SECONDS)
        .writeTimeout(120, TimeUnit.SECONDS)
        .readTimeout(60, TimeUnit.SECONDS)
        .build();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

改造java.net.SocketTimeoutException

JedisConnectionException:java.net.SocketTimeoutException:连接超时

java.net.SocketTimeoutException:读取超时问题

InfluxDBIOException:java.net.SocketTimeoutException:超时

修复java.net.SocketTimeoutException:读取超时

带有改造的java.net.SocketTimeoutException

球衣的嵌入式tomcat上的java.net.SocketTimeoutException

获取java.net.SocketTimeoutException:Android中的连接超时

AWS JAVA SDK CLI:java.net.SocketTimeoutException

Java套接字异常:java.net.SocketTimeoutException:接受超时

为什么我用OkHttp得到java.net.SocketTimeoutException?

上载大文件时Spring Boot java.net.SocketTimeoutException

使用jsoup获取java.net.SocketTimeoutException:读取超时异常

获取java.net.SocketTimeoutException:AWS CodeBuild期间连接超时

空手道中的Java net SocketTimeoutException

Spring Framework - 超时 java.net.SocketTimeoutException: timeout

在Android设备上构建的CodeNameOne中的SocketTimeoutException

Android SocketTimeoutException原因

android中SocketTimeoutException的案例

SocketTimeoutException Android改造

带有 HBase(两个 Kerberos)的 Hive java.net.SocketTimeoutException .. 在表“hbase:meta”上

UI自动化-java.net.SocketTimeoutException:“驱动程序URL”读取超时

AWS S3 v2 GetObject无法取消编组响应(java.net.SocketTimeoutException)

更新检查失败:java.net.SocketTimeoutException:ehcache配置中的连接超时

轮询时,AWS SWF决策程序“ java.net.SocketTimeoutException:读取超时”

多线程服务器随机抛出 java.net.SocketTimeoutException: Read timed out

后台服务java.net.SocketTimeoutException:10分钟后连接失败

HTTP 原始请求默认抛出响应消息:java.net.SocketTimeoutException:从套接字读取时超时

iOS Simulator上的空手道抛出com.intuit.karate-java.net.SocketTimeoutException:读取超时