当前位置:   article > 正文

app逆向-⽹络请求库Retrofit2

app逆向-⽹络请求库Retrofit2

一、前言

Retrofit2 是基于 OkHttp 构建的 RESTful HTTP 客户端,专门用于简化 HTTP 请求的过程,尤其是用于访问 RESTful API。

Retrofit2 提供了一个声明式的方式来定义 REST API 接口,通过注解来描述请求方法、请求参数、请求头等,它自动处理了请求的创建、执行、响应的转换等步骤。

Retrofit2 默认使用 OkHttp 来执行网络请求,并且可以与 OkHttp 结合使用以发挥更强大的功能。

二、安装

添加依赖build.gradle

// retrofit
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
  • 1
  • 2
  • 3

三、POST应用

请求地址:

POST: https://reqres.in/api/users
  • 1

发送的数据

{
"name": "morpheus",
"job": "leader"
}
  • 1
  • 2
  • 3
  • 4

接收到的数据

{
"name": "morpheus",
"job": "leader",
"id": "171",
"createdAt": "2021-12-22T11:46:26.302Z"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

接下来代码实现,先创建解析类UserParse,用于序列化字符串:

package com.example.myapplication;

import com.google.gson.annotations.SerializedName;

public class UserParse {
    @SerializedName("name")
    String name;

    @SerializedName("job")
    String job;

    @SerializedName("id")
    String id;

    @SerializedName("createdAt")
    String createdAt;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

接下来创建api接口类ApiService

package com.example.myapplication;


import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;


public interface ApiService {
    // post请求
    @POST("api/users")
    @FormUrlEncoded
    Call<UserParse> createUser(@Field("name") String name, @Field("job") String job);
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

请求实现:

// retrofit2 post 请求
private void retroFit2postDemo(){
    String baseUrl = "https://reqres.in/";
    Retrofit mRetrofit = new Retrofit.Builder()
            .baseUrl(baseUrl)
            // 将字符串转换成java对象
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    tvContent.setText("异步请求中.......");
    mRetrofit.create(ApiService.class).createUser("admin", "java").enqueue(new retrofit2.Callback<UserParse>() {
        @Override
        public void onResponse(retrofit2.Call<UserParse> call, retrofit2.Response<UserParse> response) {
            // 处理请求成功的响应
            String name = response.body().name;
            String job = response.body().job;
            String id = response.body().id;
            String createdAt = response.body().createdAt;
            // 在这里处理响应数据
            tvContent.setText("异步请求成功" + ',' + name + ',' + job + ',' + id + ',' + createdAt);
        }

        @Override
        public void onFailure(retrofit2.Call<UserParse> call, Throwable t) {
            // 处理请求失败
            tvContent.setText("异步请求失败");
        }
    });
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

效果图:
在这里插入图片描述

四、GET应用

请求地址:

GET: https://reqres.in/api/users?page=2
  • 1

接收到的数据:
在这里插入图片描述
代码实现创建解析类UserPageParse

package com.example.myapplication;

import com.google.gson.annotations.SerializedName;


public class UserPageParse {
    @SerializedName("page")
    Integer page;

    @SerializedName("total")
    Integer total;

    @SerializedName("total_pages")
    Integer total_pages;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

接下来创建api接口类ApiService

package com.example.myapplication;


import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;


public interface ApiService {
    // get请求
    @GET("api/users")
    // UserList 请求函数名,page请求参数
    Call<UserPageParse> UserList(@Query("page") Integer page);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

请求实现:

// retrofit2 get 请求
private void retroFit2getDemo(){
    String baseUrl = "https://reqres.in/";
    Retrofit mRetrofit = new Retrofit.Builder()
            .baseUrl(baseUrl)
            // 将字符串转换成java对象
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    tvContent.setText("异步请求中.......");
    mRetrofit.create(ApiService.class).UserList(2).enqueue(new retrofit2.Callback<UserPageParse>() {
        @Override
        public void onResponse(retrofit2.Call<UserPageParse> call, retrofit2.Response<UserPageParse> response) {
            // 处理请求成功的响应
            Integer page = response.body().page;
            Integer total = response.body().total;
            Integer total_pages = response.body().total_pages;
            // 在这里处理响应数据
            tvContent.setText("异步请求成功" + ',' + page + ',' + total + ',' + total_pages);
        }

        @Override
        public void onFailure(retrofit2.Call<UserPageParse> call, Throwable t) {
            // 处理请求失败
            tvContent.setText("异步请求失败");
        }
    });
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

效果图:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/93472
推荐阅读
相关标签
  

闽ICP备14008679号