日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android Studio OkHttp的使用

發(fā)布時間:2024/9/27 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Studio OkHttp的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

OkHttp的使用

總結(jié)一下,最近的學(xué)習(xí)OkHttp的過程中遇到的一列問題。
首先,要使用這個OkHttp之前需要添加OkHttp庫的依賴。編輯app/build.gradle文件,在dependencies閉包中添加如下內(nèi)容:
dependencies{
implementation ‘com.squareup.okhttp3:okhttp:4.1.0’
}
okhttp版本視實際情況選擇

發(fā)送GET請求

// kotlin //首先,需要創(chuàng)建一個OkHttpClient實例 val client = OkHttpClient()//創(chuàng)建一個Request對象,url為請求的鏈接,下面不做解釋,括號中的url根據(jù)實際填入http連接 //例如,val url = "https://www.baidu.com/",以下同理,url為String類型 val request = Request.Builder().url(url).build() //調(diào)用OkHttpClient的newCall()方法來創(chuàng)建一個Call對象, //并調(diào)用它的execute()方法來發(fā)送請求并獲取服務(wù)器返回的數(shù)據(jù) val response = client.newCall(request).execute() //再用如下寫法得到返回的具體內(nèi)容 val responseData = response.body?.string()

由于網(wǎng)上較多的代碼還是用Java的,所以我寫的項目也是用了Java,這就麻煩了,在post請求中體現(xiàn)最深。由于kotlin的語法是不用聲明類型的,挺多變量我都不知道是什么類型。此外,kotlin運用了大量語法糖,導(dǎo)致語法上和Java差別還是很明顯的。

// java //首先,需要創(chuàng)建一個OkHttpClient實例 OkHttpClient client = new OkHttpClient(); //創(chuàng)建一個Request對象 Request request = new Request.Builder().url(url).build(); //調(diào)用OkHttpClient的newCall()方法來創(chuàng)建一個Call對象, Response response = client.newCall(request).execute(); //再用如下寫法得到返回的具體內(nèi)容,注意這里和kotlin是有區(qū)別的,java的在.string()前加?號會報錯 String responseData = response.body().string();

發(fā)送POST請求

post請求會比get請求復(fù)雜一點。

// kotlin //首先需要構(gòu)建一個Request Body對象來存放待提交參數(shù),key,value根據(jù)實際填入 val requestBody = FormBody.Builder().add("key",value).build() //創(chuàng)建一個OkHttpClient實例 val client = OkHttpClient()//創(chuàng)建一個Request對象 val request = Request.Builder().url(url).post(requestBody).build() //調(diào)用OkHttpClient的newCall()方法來創(chuàng)建一個Call對象, //并調(diào)用它的execute()方法來發(fā)送請求并獲取服務(wù)器返回的數(shù)據(jù) val response = client.newCall(request).execute() //再用如下寫法得到返回的具體內(nèi)容 val responseData = response.body?.string() // java //首先需要構(gòu)建一個FormBody.Builder對象來存放待提交參數(shù), FormBody.Builder builder = new FormBody.Builder(); builder.add("key",value); //創(chuàng)建一個OkHttpClient實例 OkHttpClient client = new OkHttpClient();//創(chuàng)建一個Request對象 Request request = new Request.Builder().url(url).post(builder.build()).build(); //調(diào)用OkHttpClient的newCall()方法來創(chuàng)建一個Call對象, //并調(diào)用它的execute()方法來發(fā)送請求并獲取服務(wù)器返回的數(shù)據(jù) Response response = client.newCall(request).execute(); //再用如下寫法得到返回的具體內(nèi)容 String responseData = response.body().string();

java發(fā)送post請求網(wǎng)上有的用new FormEncodingBuilder()創(chuàng)建請求表單RequestBody對象,這種寫法已經(jīng)被棄,我也被坑了很久才找到新的寫法
此外,response.body().string()不要寫成response.body().toString(), response.body().string()是將對象包含的內(nèi)容轉(zhuǎn)化為字符串,response.body().toString()是將對象直接轉(zhuǎn)化為字符串

到這里,我以為終于可以使用了。結(jié)果,一直拋出異常,上網(wǎng)查了后才發(fā)現(xiàn)
在Android 4.0以上,網(wǎng)絡(luò)連接方法execute()不能放在主線程上,不然就拋異常android.os.NetworkOnMainThreadExceptio,但是4.0下版本可以,不會報錯。所以記得發(fā)起請求時要另外開線程

總結(jié)

以上是生活随笔為你收集整理的Android Studio OkHttp的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。