OkHttp的详细使用方法
文章目錄
- OkHttp簡介
- 添加依賴
- 同步請求
- GET
- POST
- 異步請求
- GET
- POST
- 同步請求、異步請求區(qū)別
- GET、POST請求方式區(qū)別
OkHttp簡介
OkHttp是由Square公司開發(fā)的,除了OkHttp 之外,還開發(fā)了 Picasso、Retrofit等著名的開源項目,現(xiàn)在已經(jīng)成了廣大Android開發(fā)者首選的網(wǎng)絡(luò)通信庫。OkHttp地址是:https://github.com/square/okhttp。
添加依賴
//OkHttp(網(wǎng)絡(luò)請求框架) implementation 'com.squareup.okhttp3:okhttp:3.4.1'同步請求
GET
想要發(fā)送一個請求呢,這兩個對象是不可少的,當(dāng)然這里還只是一個空的請求
// 實例化OkHttpClient對象 OkHttpClient client = new OkHttpClient(); // 實例化Request對象(空) Request request=new Request.Builder().build();我們先來加上一個目標(biāo)地址
// 實例化Request對象(空)Request request=new Request.Builder().url("www.baidu.com").build();發(fā)送請求,獲得數(shù)據(jù),由于這里有IO操作,所以try catch一下
try {// Response對象存儲的就是獲取的數(shù)據(jù)Response response=client.newCall(request).execute();} catch (IOException e) {e.printStackTrace();}然后將上面Reeponse得到的數(shù)據(jù)轉(zhuǎn)化成具體內(nèi)容
String data = response.body().string();POST
POST請求的話和GET請求差不多,就多了個RequestBody對象,用來攜帶傳入的參數(shù)
//實例化RequestBody對象 RequestBody requestBody=new FormBody.Builder().add("","").build();然后在Request中調(diào)用.post()方法,傳入RequestBody
// 實例化Request對象Request request = new Request.Builder().url("www.baidu.com").post(requestBody).build();其他和GET方式完全一樣,如下
// 實例化OkHttpClient對象OkHttpClient client = new OkHttpClient();//實例化RequestBody對象RequestBody requestBody = new FormBody.Builder().add("", "").build();// 實例化Request對象Request request = new Request.Builder().url("www.baidu.com").post(requestBody).build();try {// Response對象存儲的就是獲取的數(shù)據(jù)Response response = client.newCall(request).execute();String data = response.body().string();} catch (IOException e) {e.printStackTrace();}異步請求
異步請求和同步請求的區(qū)別就是:發(fā)送請求那一塊,同步請求是Response response = client.newCall(request).execute();,而異步請求是:client.newCall(request).enqueue(new Callback());
GET
OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url("www.baidu.com").build();client.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {}@Overridepublic void onResponse(Call call, Response response) throws IOException {String responseData = response.body().string();setUI(responseData);}});POST
OkHttpClient client = new OkHttpClient(); RequestBody requestBody = new FormBody.Builder().add("", "").build();Request request = new Request.Builder().url("www.baidu.com").post(requestBody).build(); client.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {}@Overridepublic void onResponse(Call call, Response response) throws IOException {String responseData = response.body().string();setUI(responseData);}});相信很多小伙伴有一個疑問,同步請求、異步請求、GET、POST我都會了,那我他們的區(qū)別是什么呢?
同步請求、異步請求區(qū)別
用簡單通俗一點的語言說一下:
同步請求:同步請求是發(fā)送請求后,只能等服務(wù)器處理完這個請求,才能去干別的
異步請求:異步請求是發(fā)送請求后,服務(wù)器會在一邊處理請求,中途可以去干別的
優(yōu)劣:異步請求的優(yōu)勢很明顯,所以開發(fā)中能用異步請求就用異步請求
GET、POST請求方式區(qū)別
這是來自W3school的表格,可以看到最后一欄,GET方式會暴露數(shù)據(jù),而POST不會,所以顯而易見,POST的請求方式是更加安全的!
如果你覺得本文還不算太差,就點個贊吧!
總結(jié)
以上是生活随笔為你收集整理的OkHttp的详细使用方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring security导致登录后
- 下一篇: 烟草大王褚时健:八年奋战搞品牌农业