我在使用Okhttp + Node时遇到了问题.js强大的服务器端大文件上传。目前,上传适用于<100Mb 文件,但对于较大的文件失败。对于较大的文件,无论文件大小如何,onprogress 事件服务器端都会触发,直到 99% 的进度,然后停止,报告请求中止,并且不触发 onfile 事件。
已经尝试了超时解决方法,甚至定义了一个自定义套接字工厂来手动设置套接字保持连接和超时。
所以,我被困在这里了。任何帮助将不胜感激。
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.org/abuwandi/snoopy
在大文件上进行了测试,它就像一个魅力