大文件上传失败"/>
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大文件上传失败
发布评论