【问题标题】:Retrofit socket timeout exception while uploading larger files using multipart使用多部分上传较大文件时改造套接字超时异常
【发布时间】:2017-11-13 08:13:32
【问题描述】:

我在使用改造 2.0.2 库和 okhttp 2.3.0 时遇到套接字超时异常的问题。我正在尝试上传 500kb 到 1.5mb 之间的图像文件,它正在成功上传。但是当我尝试上传大于 5mb 的视频文件时,我遇到了这个异常。

我使用httpclient进行如下连接设置。

public static OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .connectTimeout(0, TimeUnit.SECONDS)
            .writeTimeout(0, TimeUnit.SECONDS)
            .readTimeout(0, TimeUnit.SECONDS)
            .build();

请建议我上传没有此问题的较大文件。提前致谢

【问题讨论】:

  • 一个 post 方法可以有最大 4 mB 的主体,不管它是多部分的,你必须我们一个自定义的 FTP 提供程序,或者你必须为这样的上传实现一个自定义机制,在块中拆分文件,上传到服务器,然后在服务器上合并并保存

标签: android retrofit2 socket-timeout-exception okhttp


【解决方案1】:

您可以按如下方式提供以秒为单位的时间
公共类 ApiClient {

public static final String BASE_URL = "your_url";
public static Retrofit retrofit = null;

public static Retrofit getApiClient() {
    if (retrofit == null) {
        OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
                .connectTimeout(60, TimeUnit.SECONDS)
                .readTimeout(60, TimeUnit.SECONDS)
                .writeTimeout(60, TimeUnit.SECONDS)
                .build();
        return new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .client(okHttpClient)
                .addConverterFactory(GsonConverterFactory.create())
                .build();


    }

        return retrofit;
}

}

我给了 60 秒

【讨论】:

  • 即使我给了 60 秒,我也会遇到同样的错误。连接超时后有没有办法重试?
  • 试着给 2 分钟,比如 120 秒,如果我有任何解决方案,我会告诉你。
  • 你有什么解决办法吗? @哈里克里希纳
【解决方案2】:

这种类型的错误可能有两个问题。

  1. 检查读写超时
val client = OkHttpClient.Builder()
    .connectTimeout(30, TimeUnit.SECONDS)
    .writeTimeout(30, TimeUnit.SECONDS)
    .readTimeout(30, TimeUnit.SECONDS)
    .build()
  1. 检查您发送的 Mime 类型。后端开发人员可能已经过滤了他们最后接受的 Mime 类型。而不是 MediaType.parse("multipart/form-data")。为 image/jpgvideo/mp4 等文件编写有效的 mime 类型
MediaType.parse("image/png")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 2019-07-24
    • 2011-11-02
    • 2015-07-07
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多