Android初次使用 Retrofit
Posted 张学徒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android初次使用 Retrofit相关的知识,希望对你有一定的参考价值。
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();
}
}
运行结果:
以上是关于Android初次使用 Retrofit的主要内容,如果未能解决你的问题,请参考以下文章
使用 Retrofit Android 使用 WCF,响应正文为空,响应代码 405
Android Studio - 使用 retrofit2 从 restdb 获取信息
git项目初次push提示error: failed to push some refs to https://gitee.com/xxxx/gittest.git’解决方案 --九五小庞(代码片段