最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Okhttp大文件上传失败

网站源码admin15浏览0评论

Okhttp大文件上传失败

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

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

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论