【发布时间】:2020-09-05 20:32:25
【问题描述】:
var client = OkHttpClient()
val builder = OkHttpClient.Builder()
val gson = GsonBuilder()
.setLenient()
.create()
builder.addInterceptor(AddCookiesInterceptor(mcontext))
builder.addInterceptor(ReceivedCookiesInterceptor(mcontext))
builder.callTimeout(100,TimeUnit.SECONDS)
client = builder.build()
retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
// .addConverterFactory(ScalarsConverterFactory.create())
.build()
这是我的改造客户服务构建器。对于带有 json 响应回调的普通 api 函数,它可以正常工作。大文件上传需要修改吗?
在当前情况下,上传 20 mb 数据,在慢速网络连接中需要更多时间,这会返回套接字超时异常。
作为多部分正文上传
var fileBody : ProgressRequestBody? = null
fileBody = ProgressRequestBody(file,"*/*",this@CaseFileUploadFragment)
var fileToUpload: MultipartBody.Part =
MultipartBody.Part.createFormData("image",file.name, fileBody)
var filename : RequestBody =
RequestBody.create(MediaType.parse("text/plain"),file.getName())
下面是用到的函数
@Multipart
@POST("{urlMpString}")
fun uploadFile(
@Path ("urlMpString") urlEndString : String, @Part file: MultipartBody.Part, @Part("file") requestBody: RequestBody,
@Part("apiInfo") `object1`: JsonObject, @Part("parameters") `object2`: JsonObject
): Call<JsonObject>
对于小型数据文件一切正常。 任何建议和帮助将不胜感激。 谢谢
【问题讨论】:
-
也许您的服务器需要较大的超时时间,请检查 Web 服务并查看那里的超时时间,并检查连接是否持续打开。我只使用了大约 50 MB 的小文件,而且效果很好
-
@RahulChandrabhan 你能帮忙吗? stackoverflow.com/questions/62783444/…
标签: android kotlin file-upload retrofit2 multipartform-data