OkhttpUtils向後臺傳送Json資料
阿新 • • 發佈:2019-01-04
OkHttp是一個優秀的網路請求框架。通過對OkHttp的封裝,可以極大的擴充套件其效能。
okhttp-utils是一個對OkHttp的封裝庫,原庫由hongyang封裝,我在其基礎上進行了少許的修改,使其更符合我的專案。
1. 在app專案下的build.gradle下依賴庫
compile 'com.zhy:okhttputils:2.6.2'
2. 在application中對okhttp-utils進行配置
// 配置okhttputils val okHttpClient = OkHttpClient.Builder() // .addInterceptor(new LoggerInterceptor("TAG")) .connectTimeout(10000L, TimeUnit.MILLISECONDS) .readTimeout(10000L, TimeUnit.MILLISECONDS) //其他配置 .build() OkHttpUtils.initClient(okHttpClient)
2. 在需要上穿json的地方,使用okhttp-utils,專案中使用的是okhttp的post方式提交json
OkHttpUtils .postString() .url(NetApi.url) .content(json.toString()) .mediaType(MediaType.parse("application/json; charset=utf-8")) .build() .execute(MyStringCallback())
3. 處理MyStringCallback
inner class MyStringCallback : StringCallback() { override fun onBefore(request: Request?, id: Int) { //setTitle("loading..."); } override fun onAfter(id: Int) { //setTitle("Sample-okHttp"); } override fun onError(call: Call, e: Exception, id: Int) { e.printStackTrace() Log.e(GTIntentService.TAG, "資料傳送失敗了") } override fun onResponse(response: String, id: Int) { Log.e(GTIntentService.TAG, "onResponse:complete") Log.e(GTIntentService.TAG, "資料傳送成功了") Log.d(GTIntentService.TAG, "response.code()==$response") } }
如此,可以向伺服器提交json的資料。