使用OkHttp3框架獲取伺服器資料
阿新 • • 發佈:2019-01-05
OkHttp3框架的使用
1.匯入okhttp的jar包
切換到project下,將okhttp-3.2.0.jar和okio-1.12.0放到app/libs下,為專案匯入該jar包,右鍵jar包Add As Library選擇需要匯入的專案即可成功匯入。
或在需要匯入的專案下的build.gradle加入如下程式碼(dependencies類):
implementation files('D:/android_studio/cunfang/MyApplication/app/libs/okhttp-3.2.0.jar')
implementation files('D:/android_studio/cunfang/MyApplication/app/libs/okio-1.12.0.jar')
這裡的路徑是你jar包的路徑
2.發起網路請求
Get請求方式:
public void OkHttpGet() { new Thread(){ @Override public void run() { //獲取一個OkHttpClient物件 OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().url("這裡是介面地址").build(); try { Response response = client.newCall(request).execute(); if(response.isSuccessful()) { //如果請求成功,通知Handler更新資料 result="請求結果:"+response.body().string(); handler.sendEmptyMessage(0x100); } } catch (Exception e) { e.printStackTrace(); } } }.start(); }
在子執行緒中進行耗時操作後,使用Handler傳送訊息通知UI執行緒更新
Post請求方式:
public void OkhttpPost(){ new Thread(){ @Override public void run() { OkHttpClient client = new OkHttpClient(); //建立一個表單物件 FormBody.Builder formBody = new FormBody.Builder(); formBody.add("UserName","張三"); formBody.add("PassWord","123456"); Request request = new Request.Builder().url("這裡是介面地址") .post(formBody.build()) .build(); try { Response response = client.newCall(request).execute(); if(response.isSuccessful()) { result="User結果:"+response.body().string(); handler.sendEmptyMessage(0x100); } } catch (Exception e) { e.printStackTrace(); } } }.start(); }
okhttp3預設請求方式是Get,Post請求方式需要宣告
返回的response中,response.code()為請求碼,成功預設返回200。
response.message()為返回結果,成功預設返回OK。
response.body()為返回內容,獲取字串時使用response.body().string()而response.body().toString()方法會導致請求結果亂碼。