Retrofit2学习之三:GET请求
简介
Retrofit2 GET请求的请求参数支持Query、RESTful Path、Map及其任意组合形式。
官方文档:http://square.github.io/retrofit/
GET请求
创建业务请求接口
public interface Api {
/**
* Query参数
* @param user_id
* @return
*/
@GET("user/info")
Call<User> getUserInfoWithQuery(@Query("id") int user_id);
/**
* Path参数
* @param user_id
* @return
*/
@GET("user/{id}")
Call<User> getUserInfoWithPath(@Path("id") int user_id);
/**
* Map参数
* @param params
* @return
*/
@GET("user/info")
Call<User> getUserInfoWithMap(@QueryMap() Map<String, String> params);
}
创建一个Retrofit的实例,然后利用Retrofit实例创建接口对象和调用接口方法
public void getRequest(View view) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(SERVER_ADDRESS)
.addConverterFactory(GsonConverterFactory.create())
.build();
api = retrofit.create(Api.class);
Map<String, String> map = new HashMap<>();
map.put("id", "8");
map.put("name", "AndroidiOS.cc");
//api.getUserInfoWithQuery(8).enqueue(new Callback<User>() {
//api.getUserInfoWithPath(8).enqueue(new Callback<User>() {
api.getUserInfoWithMap(map).enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
//在UI主线程运行
if (response.isSuccessful()) {
Log.i(TAG, "返回成功");
User user = response.body();
if (user != null) {
Toast.makeText(MainActivity.this, "User Id: " + user.getId(), Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
Log.i(TAG, "请求失败: " + t.getLocalizedMessage());
}
});
}
依次调用 getUserInfoWithQuery
、getUserInfoWithPath
和 getUserInfoWithMap
,服务端接收的的请求头如下,可见Map参数只是Query参数的拼接组合。
"GET /user/info?id=8 HTTP/1.1" 200 -
"GET /user/8 HTTP/1.1" 200 -
"GET /user/info?name=AppBlog.CN&id=8 HTTP/1.1" 200 -
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/25/retrofit2-learning-3-get-request/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
打赏
海报
Retrofit2学习之三:GET请求
简介
Retrofit2 GET请求的请求参数支持Query、RESTful Path、Map及其任意组合形式。
官方文档:http://square.github.io/retrofit/
GET请求
创建业务请求接口……
文章目录
关闭
共有 0 条评论