- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从 android 上传文件,但出现异常 SocketTimeoutException
。我试过使用 curl 并上传相同的文件并且它有效。
我尝试过不同的超时:20、30、50、100 秒,但前 10 秒出现异常。
源代码
MediaType OCTET_STREAM = MediaType.parse("application/octet-stream");
OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(20,TimeUnit.SECONDS);
client.setReadTimeout(20, TimeUnit.SECONDS);
FileInputStream fis = new FileInputStream(localfile_path);
byte[] content = IOUtils.toByteArray(fis);
RequestBody body = RequestBody.create(OCTET_STREAM, content);
JSONObject dropbox_json = new JSONObject();
try {
dropbox_json.put("path", dropbox_path);
dropbox_json.put("mode", mode);
dropbox_json.put("autorename", autorename);
dropbox_json.put("mute", mute);
}
catch(JSONException e){}
String dropbox_arg = dropbox_json.toString();
Request request = new Request.Builder()
.url("https://content.dropboxapi.com/2/files/upload")
.addHeader("Authorization", "Bearer "+MyGlobals.getDropboxToken())
.addHeader("Dropbox-API-Arg", dropbox_arg)
.addHeader("data-binary", "@"+localfile_path)
.post(body)
.build();
Call call = client.newCall(request);
com.squareup.okhttp.Response response = call.execute();
return response.body().string();
异常
11-08 21:34:42.426 29236-31493/es.ric.android.swipe W/System.err: java.net.SocketTimeoutException: timeout
11-08 21:34:42.449 29236-31493/es.ric.android.swipe W/System.err: at okio.Okio$3.newTimeoutException(Okio.java:207)
11-08 21:34:42.464 29236-31493/es.ric.android.swipe W/System.err: at okio.AsyncTimeout.exit(AsyncTimeout.java:261)
11-08 21:34:42.478 29236-31493/es.ric.android.swipe W/System.err: at okio.AsyncTimeout$1.write(AsyncTimeout.java:158)
11-08 21:34:42.495 29236-31493/es.ric.android.swipe W/System.err: at okio.RealBufferedSink.emitCompleteSegments(RealBufferedSink.java:176)
11-08 21:34:42.510 29236-31493/es.ric.android.swipe W/System.err: at okio.RealBufferedSink.write(RealBufferedSink.java:46)
11-08 21:34:42.531 29236-31493/es.ric.android.swipe W/System.err: at com.squareup.okhttp.internal.http.HttpConnection$FixedLengthSink.write(HttpConnection.java:302)
11-08 21:34:42.547 29236-31493/es.ric.android.swipe W/System.err: at okio.RealBufferedSink.emitCompleteSegments(RealBufferedSink.java:176)
11-08 21:34:42.565 29236-31493/es.ric.android.swipe W/System.err: at okio.RealBufferedSink.write(RealBufferedSink.java:96)
11-08 21:34:42.595 29236-31493/es.ric.android.swipe W/System.err: at com.squareup.okhttp.RequestBody$2.writeTo(RequestBody.java:96)
11-08 21:34:42.613 29236-31493/es.ric.android.swipe W/System.err: at com.squareup.okhttp.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:887)
11-08 21:34:42.647 29236-31493/es.ric.android.swipe W/System.err: at com.squareup.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:749)
11-08 21:34:42.667 29236-31493/es.ric.android.swipe W/System.err: at com.squareup.okhttp.Call.getResponse(Call.java:268)
11-08 21:34:42.687 29236-31493/es.ric.android.swipe W/System.err: at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:224)
11-08 21:34:42.706 29236-31493/es.ric.android.swipe W/System.err: at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:195)
11-08 21:34:42.719 29236-31493/es.ric.android.swipe W/System.err: at com.squareup.okhttp.Call.execute(Call.java:79)
11-08 21:34:42.735 29236-31493/es.ric.android.swipe W/System.err: at es.ric.android.swipe.services.ServiceSaveFoto.upload(ServiceSaveFoto.java:134)
11-08 21:34:42.751 29236-31493/es.ric.android.swipe W/System.err: at es.ric.android.swipe.services.ServiceSaveFoto.onHandleIntent(ServiceSaveFoto.java:64)
11-08 21:34:42.768 29236-31493/es.ric.android.swipe W/System.err: at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
11-08 21:34:42.782 29236-31493/es.ric.android.swipe W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
11-08 21:34:42.796 29236-31493/es.ric.android.swipe W/System.err: at android.os.Looper.loop(Looper.java:135)
11-08 21:34:42.809 29236-31493/es.ric.android.swipe W/System.err: at android.os.HandlerThread.run(HandlerThread.java:61)
11-08 21:34:42.823 29236-31493/es.ric.android.swipe W/System.err: Caused by: java.net.SocketException: socket is closed
11-08 21:34:42.928 29236-31493/es.ric.android.swipe W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl$SSLOutputStream.write(OpenSSLSocketImpl.java:759)
11-08 21:34:42.942 29236-31493/es.ric.android.swipe W/System.err: at okio.Okio$1.write(Okio.java:80)
11-08 21:34:42.955 29236-31493/es.ric.android.swipe W/System.err: at okio.AsyncTimeout$1.write(AsyncTimeout.java:155)
11-08 21:34:42.961 29236-31493/es.ric.android.swipe W/System.err: ... 18 more
最佳答案
看起来您还需要一个写入超时。
client.setWriteTimeout(20, TimeUnit.SECONDS);
关于android - okhttp -Dropbox http API v2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33598816/
我正在实现 Server-Sent Events使用 OkHttp 的库。服务器发送事件的工作原理是与服务器保持开放的 HTTP 连接,在该服务器上,“事件”可以流式传输回客户端。连接只会在错误或客户
我需要用 OkHttp 重现错误,这样我就可以提交错误或在 StackOverflow 上提问。 无需大量设置即可执行此操作的最简单方法是什么? 我读过 https://stackoverflow.c
我需要用 OkHttp 重现错误,这样我就可以提交错误或在 StackOverflow 上提问。 无需大量设置即可执行此操作的最简单方法是什么? 我读过 https://stackoverflow.c
我正在尝试使用 OkHttp 与 HTTP/2 服务器进行通信客户端。 添加到 Maven POM: com.squareup.okhttp3 okhttp 3.2.0 这是我的
我在使用我的应用程序时不断在 Logcat 中看到以下日志行: 19098-19147/ W/OkHttpClient: A connection to was leaked. Did you fo
我的团队正受此困扰issue使用 slack 集成来上传文件,因此根据该问题中的评论,我想限制我们的 Kotlin 实现中的请求。 我正在尝试集成 Okio Throttler在 OkHttp 拦截器
如何验证 okhttp 是否成功协商了 http/2 而没有使用 https/1.1?我可以检查回复中的一些信息吗? 谢谢, -托尼 最佳答案 仅供引用,因为 okhttp 3.0 左右 OkHttp
我想提出一个请求并强制它使用 Protocol.HTTP_2。 我尝试了下面的代码: import okhttp3.{OkHttpClient, Protocol, Request} import s
我不太熟悉 OkHttp 库,我对它应该如何用于异步请求有一些疑问。 对于 Android 编程,我将 android 库用于 http,并将 asyncTask 用于某些请求。 但是因为我想尝试 O
我在我的项目中使用 Retrofit-1.6.0 + okhttp-2.0.0-RC1 。当我运行项目时出现错误。 java.lang.RuntimeException: Retrofit detec
OkHttpClient 的默认行为是将 keep-alive 设置为 true。对于我们的特定用例,我需要将其设置为 false。 我没有在 Java 源代码中找到任何设置来执行此操作。 有人遇到过
我试图让 OkHttp 在我的 Android Studio 项目中工作,我创建了一个类并从这里粘贴以下代码:https://github.com/square/okhttp/blob/master/
我注意到 OkHttp 在 Android 5.0+ 中通过 ALPN 支持 h2。 来自 some article ,我了解到我们可以对 http/2 请求使用 NPN 协商。 我可以通过 NPN
我知道,Retrofit 在内部使用 OkHttp。但是,我可以看到一些开发人员提供了以下方法的应用 return new Retrofit.Builder() .baseUrl(Bu
我正在努力让 Android 上的 OkHttpClient 使用自定义证书发出 HTTPS 请求,同时绑定(bind)到特定网络接口(interface)的本地地址。我目前对此的尝试使用以下 OkH
我有一个用于 https 连接演示的 native android 应用程序,我遇到了这样的异常:: 我的连接代码很简单: URL url = new URL("https://192.168.1.5
我正在重写 EventListener 中的 dnsEnd() 函数: @Override public void dnsEnd(Call call, String domainName, L
我有okhttp的android多项目设置,作为多个项目的一部分 在项目A中,okhttp包含在源代码中。 在项目B中,okhttp带有库依赖项的一部分。 构建时,出现以下错误。 Execution
我正在尝试使用pesapal向我的应用程序添加付款但遇到问题,我将它们的依赖实现'com.pesapal.android:pesapalandroid:1.0.5'添加到我的应用程序中,从那时起我就一
我只是尝试使用 OkHttp但是当我将我的 gradle 文件与 Android Studio 同步时,我遇到了以下问题: Error:Failed to find: com.squareup.okh
我是一名优秀的程序员,十分优秀!