gpt4 book ai didi

java - okhttp大文件上传失败

转载 作者:行者123 更新时间:2023-12-05 07:35:00 25 4
gpt4 key购买 nike

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

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

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

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();

最佳答案

使用 snoopy api 的方式太简单了:如果排除标识符定义,只需一行代码 :)

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

https://bitbucket.org/abuwandi/snoopy

在大文件上测试过,效果很好

关于java - okhttp大文件上传失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49827065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com