Library for easier to build network requests with retrofit.
dependencies {
// add dependency, please replace x.y.z to the latest version
implementation "com.xueqiu.net:core:x.y.z"
}
NetManager use Retrofit, please read their documentation before using it.
Init network manager in your application.
val options = NetworkOptions()
.withInterceptor(object : BaseHeaderInterceptor() {
override fun setHeaders(url: URL): Map<String, String>? {
val header = HashMap<String, String>()
header["test"] = "test" // set your header
return header
}
})
.withEachTimeout(10 * 1000)
.withBaseUrl(baseUrl) // replace to your base url
.isDebug(BuildConfig.DEBUG)
.withCacheSize(100 * 1024 * 1024)
.withHttpDNS(object : BaseDNS() {
override fun getAccessIP(domain: String): String {
return domain
}
})
.withIPVerify(object : BaseIPVerify() {
override fun verifyIP(hostname: String?, session: SSLSession?): Boolean {
// your rules
return true
}
})
.withInterceptor(object : BaseUrlInterceptor() {
override fun getUrl(url: URL): URL {
return url
}
})
.withGson(mGson)
NetworkManager.init(options)
Create your api class.
interface TestApi {
@POST("/test")
fun test(@Body model: TestModel): Observable<EmptyResponse>
}
Send request to your server.
val api = NetworkManager.buildApi(TestApi::class.java)
api.test(TestModel()) // do not request on main thread
.subscribe({
Log.i("request", "success")
}, {
Log.e("request", "fail")
})
If you are using R8 or ProGuard add the options from retrofit and okHttp