Android Studio 4.0
在 build.grale 添加如下依賴:
dependencies {
// Okhttp庫
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
// Retrofit庫
implementation 'com.squareup.retrofit2:retrofit:2.6.0'
// Gson庫決議和生成Json
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
}
在 AndroidManifest.xml 中添加網路權限
<uses-permission android:name="android.permission.INTERNET"/>
創建 Api 介面檔案,代碼如下
import java.util.Map;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface Api
// 網站及介面串列來源:https://blog.csdn.net/c__chao/article/details/78573737
/**
* 獲取實時段子
* @param page 段子頁碼
* @param count 獲取的數量
* @return
*/
@GET("/getJoke?type=video") // 段子型別為視頻
Call<Map> getJoke(@Query("page") int page, @Query("count") int count);
}
創建一個 NetUtil 網路工具類,代碼如下
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import java.util.List;
import java.util.Map;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
/**
* 網路工具類
*/
public class NetUtil {
public final static String BASE_URL = "https://api.apiopen.top/";
private final static String TAG = "NetUtil";
private static Retrofit retrofit;
private static Api api;
static {
retrofit = new Retrofit.Builder()
.baseUrl(NetUtil.BASE_URL)
.addConverterFactory(GsonConverterFactory.create()) // Gson 轉換資料格式
.build();
api = retrofit.create(Api.class);
}
public static void getJock() {
Call<Map> call = api.getJoke(1, 5); // 呼叫獲取段子的 api 方法
call.enqueue(new Callback<Map>() {
@Override
public void onResponse(Call<Map> call, Response<Map> response) {
Map data = response.body();
Log.e(TAG, "onResponse: " + data);
// 獲取段子結果,輸出每個段子的內容
List<Map> result = (List<Map>) data.get("result");
int i = 0;
for (Map r : result) {
i++;
Log.d(TAG, "段子" + i + ":" + r);
}
}
@Override
public void onFailure(Call<Map> call, Throwable t) {
Log.e(TAG, "onFailure: 獲取失敗");
}
});
}
}
在 MainActivity 中呼叫 NetUtil 類
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 呼叫實時段子方法
NetUtil.getJock();
}
}
運行結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/286348.html
標籤:其他
