好久不见,甚是想念
今天主要带来的表演是网络请求,在这里简单做一个记录
话不多说上代码
/*
*
* 网络请求
* */
class RetrofitUtil private constructor() {
private val CONNECT_TIMEOUT = 60L
private val READ_TIMEOUT = 100L
private val WRITE_TIMEOUT = 60L
companion object {
val instance: RetrofitUtil by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
RetrofitUtil()
}
}
/**
* by lazy 懒加载(延迟加载)
*/
private val mRetrofit by lazy { myRetrofit() }
private fun myRetrofit(): Retrofit {
return Retrofit.Builder()
//此处写接口地址
.baseUrl(AppConst.BASE_URL)
// 设置OkHttpclient
.client(configOkHttpClient())
// RxJava3
.addCallAdapterFactory(RxJava3CallAdapterFactory.create())
// 字符串
.addConverterFactory(ScalarsConverterFactory.create())
// Gson
.addConverterFactory(GsonConverterFactory.create())
.build()
}
//单张图片上传
fun uploadSinglePhoto(path: String): MultipartBody.Part? {
var parts:MultipartBody.Part?=null
val file = File(path)
if (file.exists()) {
parts= MultipartBody.Part.createFormData(
"files",
file.name,
RequestBody.create(MediaType.parse("image/*"), file)
)
}
return parts
}
//多图片上传
fun uploadManyPhoto(list: List<String>): Array<MultipartBody.Part?>? {
if (list == null || list.isEmpty()) {
return null
}
val parts = arrayOfNulls<MultipartBody.Part>(list.size)
for (i in list.indices) {
val file = File(list[i])
if (file.exists()) {
parts[i] = MultipartBody.Part.createFormData(
"file",
file.name,
RequestBody.create(MediaType.parse("image/*"), file)
)
}
}
return parts
}
//拦截器
private fun configOkHttpClient(): OkHttpClient? {
val builder = OkHttpClient.Builder()
if (BuildConfig.DEBUG) {
//log拦截器
builder.addInterceptor(loggingInterceptor)
}
builder.connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS)
builder.writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS)
builder.readTimeout(READ_TIMEOUT, TimeUnit.SECONDS)
return builder.build()
}
/**
* 日志interceptor
*/
private val loggingInterceptor: Interceptor =
HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)
fun <T> create(service: Class<T>?): T {
return mRetrofit.create(service)
}
}