Okhttp大文件上传失败

编程入门 行业动态 更新时间:2024-10-07 18:28:50

Okhttp<a href=https://www.elefans.com/category/jswz/34/1770134.html style=大文件上传失败"/>

Okhttp大文件上传失败

我遇到Okhttp + Node.js强大的服务器端大文件上传问题。目前,上传文件适用于<100Mb的文件,但无法上传较大的文件。对于较大的文件,无论文件大小如何,均将触发onprogress事件服务器端,直到99%的进度为止,然后停止,报告请求中止,并且不会触发onfile事件。

已经尝试过超时解决方法,甚至定义了一个自定义SocketFactory来手动设置套接字keepalive和sotimeout。

所以,我被困在这里。任何帮助,将不胜感激。

CustomSocketFactory MySocketFactory = new CustomSocketFactory();

OkHttpClient client = new OkHttpClient.Builder()
        .socketFactory(MySocketFactory)
        .readTimeout(largenumber, TimeUnit.SECONDS)
        .writeTimeout(largenumber, TimeUnit.SECONDS)
        .connectTimeout(largenumber, TimeUnit.SECONDS)

        .build();

RequestBody requestBody = new MultipartBody.Builder()
        .setType(MultipartBody.FORM)
        .addFormDataPart("nombre_file", file_pais.getName())
        .addFormDataPart("nombre_pais", pais.getName())
        .addFormDataPart("file", file_pais.getName(),
                RequestBody.create(MediaType.parse("application/octet-stream"),
                        new File(filepath)
        .build();

Request request = new Request.Builder()
        .url(server_url)
        .post(requestBody)
        .build();

Call call = client.newCall(request);

Response response = call.execute();
response.body().close();
回答如下:

使用史努比api太容易了:如果不包括标识符定义,一行代码:)

URI uri = ...;
Path fileToUpload = ...;
Snoopy.builder()
      .config(SnoopyConfig.defaults())
      .build()
      .post(uri)
      .followRedirects(true)
      .failIfNotSuccessfulResponse(true)
      .body(fileToUpload)
      .consumeAsString();

https://bitbucket/abuwandi/snoopy

在大文件上进行测试,它就像一种魅力一样工作

更多推荐

Okhttp大文件上传失败

本文发布于:2024-05-07 10:26:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1755823.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:大文件   上传   Okhttp

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!