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()
这是我的retrofit客户端服务构建器。对于普通的api函数,用json响应回调就可以了。对于大文件的上传,是否需要修改?
在目前的情况下,上传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>
小数据文件一切正常。任何建议和帮助都将被感激。谅谅
试试下面的okHttpClient代码
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(5, TimeUnit.MINUTES)
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(15, TimeUnit.SECONDS)
.build();