Android——Retrofit

Retrofit

简介:对OkHttp的封装

    根据请求接口,获取响应

 

注解

  方法注解

    @GET:声明为GET请求方式,@GET(""):详细路径

    @POST:声明为POST请求方式,@POST(“”):详细路径

    @HTTP:声明为自定义请求方式

    @FormUrlEncoding:对post请求,声明请求体为表单

    @Multipart:对post请求,声明请求体为多类型

    @Streaming:对post请求,声明请求体为流

 

  参数注解

    @Query:对get请求:设置接受的参数名

    @Field:对post请求:设置接受的参数名

    @QueryMap:对get请求:设置接受参数为Map<String,String>集合

    @FieldMap:对post请求:设置接受参数为Map<String,String>集合

    @Part:对post请求:设置上次的文件

    

  其他注解

    @Path

    @Header:加入请求头

    @Headers:在方式上写死请求头

 

方法

   (Retrofit)

   Retrofit retrofit = new Retrofit.Builder().baseUrl("https://www.httpbin.org/").build();

    返回值类型:Retrofit

    返回值作用:生成Retrofit对象

    作用:根据基本url,生成Retrofit对象

 

   Retrofit retrofit.create(HttpbinService.class);

    参数:

      HttpbinService.class 是请求接口对象

    返回值:HttpbinService 接口对象

    返回值意义:获取请求接口对象

    作用:获取请求接口对象,调用请求接口定义的方法

 

使用

    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

  

  测试接口:https://www.wanandroid.com/  

  测试Api:user/login

  参数:username, password

  值:lanceedu , 123123  

 

  创建JavaBean,指定Call泛型的对象

复制代码
public class BaseResponse {
    private Data data;
    private int errorCode;
    private String errorMsg;

    public Data getData() {
        return data;
    }

    public void setData(Data data) {
        this.data = data;
    }

    public int getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(int errorCode) {
        this.errorCode = errorCode;
    }

    public String getErrorMsg() {
        return errorMsg;
    }

    public void setErrorMsg(String errorMsg) {
        this.errorMsg = errorMsg;
    }

    @Override
    public String toString() {
        return "BaseResponse{" +
                "data=" + data +
                ", errorCode=" + errorCode +
                ", errorMsg='" + errorMsg + '\'' +
                '}';
    }
}
复制代码
复制代码
public class Data {

    private boolean admin;
    private List<String> chapterTops;
    private int coinCount;
    private List<Integer> collectIds;
    private String email;
    private String icon;
    private long id;
    private String nickname;
    private String password;
    private String publicName;
    private String token;
    private int type;
    private String username;

    @Override
    public String toString() {
        return "Data{" +
                "admin=" + admin +
                ", chapterTops=" + chapterTops +
                ", coinCount=" + coinCount +
                ", collectIds=" + collectIds +
                ", email='" + email + '\'' +
                ", icon='" + icon + '\'' +
                ", id=" + id +
                ", nickname='" + nickname + '\'' +
                ", password='" + password + '\'' +
                ", publicName='" + publicName + '\'' +
                ", token='" + token + '\'' +
                ", type=" + type +
                ", username='" + username + '\'' +
                '}';
    }

    public boolean isAdmin() {
        return admin;
    }

    public void setAdmin(boolean admin) {
        this.admin = admin;
    }

    public List<String> getChapterTops() {
        return chapterTops;
    }

    public void setChapterTops(List<String> chapterTops) {
        this.chapterTops = chapterTops;
    }

    public int getCoinCount() {
        return coinCount;
    }

    public void setCoinCount(int coinCount) {
        this.coinCount = coinCount;
    }

    public List<Integer> getCollectIds() {
        return collectIds;
    }

    public void setCollectIds(List<Integer> collectIds) {
        this.collectIds = collectIds;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getIcon() {
        return icon;
    }

    public void setIcon(String icon) {
        this.icon = icon;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPublicName() {
        return publicName;
    }

    public void setPublicName(String publicName) {
        this.publicName = publicName;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}
复制代码

  生成PostService接口

复制代码
public interface PostService {

    @POST("user/login")
    @FormUrlEncoded
    Call<BaseResponse> post(@Field("username")String username,@Field("password")String password);

    @POST("user/login")
    @FormUrlEncoded
    Call<BaseResponse> login(@Field("username")String username,@Field("password")String password);
}
复制代码

  通过retrofit对象获取接口实现对象

复制代码
 public void test2(){
        // 用构造者模式 设置基础地址和Gson工厂获取retrofit
        retrofit1 = new Retrofit.Builder()
                .baseUrl("https://www.wanandroid.com/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        // 用retrofit 创建接口实现调用方法

        // 响应头,响应体,参数名
        // 构造者,基础地址,Gson工厂,接口实现类。
        retrofit1.create(PostService.class)
                .login("lanceedu","123123")
                .enqueue(new Callback<BaseResponse>() {
                    @Override
                    public void onResponse(Call<BaseResponse> call, Response<BaseResponse> response) {
                        Log.i(TAG, "onResponse: "+response.body().toString());
                    }

                    @Override
                    public void onFailure(Call<BaseResponse> call, Throwable t) {

                    }
                });
    }
复制代码

 

  简单描述:

    接口:响应行,响应体,参数名

    请求方式:使用retrofit对象设置基础地址,gson转换器,创建请求接口实现对象

 

posted @   remix_alone  阅读(152)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示