Android Studio OkHttp的使用
OkHttp的使用
總結一下,最近的學習OkHttp的過程中遇到的一列問題。
首先,要使用這個OkHttp之前需要添加OkHttp庫的依賴。編輯app/build.gradle文件,在dependencies閉包中添加如下內容:
dependencies{
implementation ‘com.squareup.okhttp3:okhttp:4.1.0’
}
okhttp版本視實際情況選擇
發送GET請求
// kotlin //首先,需要創建一個OkHttpClient實例 val client = OkHttpClient()//創建一個Request對象,url為請求的鏈接,下面不做解釋,括號中的url根據實際填入http連接 //例如,val url = "https://www.baidu.com/",以下同理,url為String類型 val request = Request.Builder().url(url).build() //調用OkHttpClient的newCall()方法來創建一個Call對象, //并調用它的execute()方法來發送請求并獲取服務器返回的數據 val response = client.newCall(request).execute() //再用如下寫法得到返回的具體內容 val responseData = response.body?.string()由于網上較多的代碼還是用Java的,所以我寫的項目也是用了Java,這就麻煩了,在post請求中體現最深。由于kotlin的語法是不用聲明類型的,挺多變量我都不知道是什么類型。此外,kotlin運用了大量語法糖,導致語法上和Java差別還是很明顯的。
// java //首先,需要創建一個OkHttpClient實例 OkHttpClient client = new OkHttpClient(); //創建一個Request對象 Request request = new Request.Builder().url(url).build(); //調用OkHttpClient的newCall()方法來創建一個Call對象, Response response = client.newCall(request).execute(); //再用如下寫法得到返回的具體內容,注意這里和kotlin是有區別的,java的在.string()前加?號會報錯 String responseData = response.body().string();發送POST請求
post請求會比get請求復雜一點。
// kotlin //首先需要構建一個Request Body對象來存放待提交參數,key,value根據實際填入 val requestBody = FormBody.Builder().add("key",value).build() //創建一個OkHttpClient實例 val client = OkHttpClient()//創建一個Request對象 val request = Request.Builder().url(url).post(requestBody).build() //調用OkHttpClient的newCall()方法來創建一個Call對象, //并調用它的execute()方法來發送請求并獲取服務器返回的數據 val response = client.newCall(request).execute() //再用如下寫法得到返回的具體內容 val responseData = response.body?.string() // java //首先需要構建一個FormBody.Builder對象來存放待提交參數, FormBody.Builder builder = new FormBody.Builder(); builder.add("key",value); //創建一個OkHttpClient實例 OkHttpClient client = new OkHttpClient();//創建一個Request對象 Request request = new Request.Builder().url(url).post(builder.build()).build(); //調用OkHttpClient的newCall()方法來創建一個Call對象, //并調用它的execute()方法來發送請求并獲取服務器返回的數據 Response response = client.newCall(request).execute(); //再用如下寫法得到返回的具體內容 String responseData = response.body().string();java發送post請求網上有的用new FormEncodingBuilder()創建請求表單RequestBody對象,這種寫法已經被棄,我也被坑了很久才找到新的寫法
此外,response.body().string()不要寫成response.body().toString(), response.body().string()是將對象包含的內容轉化為字符串,response.body().toString()是將對象直接轉化為字符串
到這里,我以為終于可以使用了。結果,一直拋出異常,上網查了后才發現
在Android 4.0以上,網絡連接方法execute()不能放在主線程上,不然就拋異常android.os.NetworkOnMainThreadExceptio,但是4.0下版本可以,不會報錯。所以記得發起請求時要另外開線程
總結
以上是生活随笔為你收集整理的Android Studio OkHttp的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 运达股份是做什么的
- 下一篇: Android:WiFi连接之一