1. 程式人生 > >使用OkHttp3框架獲取伺服器資料

使用OkHttp3框架獲取伺服器資料

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()方法會導致請求結果亂碼。