1. 程式人生 > >OkhttpUtils向後臺傳送Json資料

OkhttpUtils向後臺傳送Json資料

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的資料。