OkHttp+Retrofit封装请求接口

引入依赖pom.xml

<dependency>
    <groupId>com.squareup.retrofit2</groupId>
    <artifactId>converter-jackson</artifactId>
    <version>2.11.0</version>
</dependency>

示例

请求接口封装服务类

import com.cnblogs.javalouvre.vo.Repo;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Path;

public interface GitHubService {

    @GET("users/{user}/repos")
    Call<Repo[]> listRepos(@Path("user") String user);
}

响应内容封装类

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Repo {

    @JsonProperty("id")
    private String id;

    @JsonProperty("node_id")
    private String nodeId;

    @JsonProperty("name")
    private String name;

    @JsonProperty("full_name")
    private String fullName;

    public String getId() {
        return id;
    }

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

    public String getNodeId() {
        return nodeId;
    }

    public void setNodeId(String nodeId) {
        this.nodeId = nodeId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getFullName() {
        return fullName;
    }

    public void setFullName(String fullName) {
        this.fullName = fullName;
    }

    @Override
    public String toString() {
        return "{\"id\":\"" + this.id + "\",\"nodeId\":\"" + this.nodeId + "\",\"name\":\"" + this.name + "\",\"fullName\":\"" + this.fullName + "\"}";
    }
}

测试

        final OkHttpClient client = (new OkHttpClient.Builder())
                .connectTimeout(3000, SECONDS)
                .readTimeout(3000, SECONDS)
                .writeTimeout(3000, SECONDS)
                .retryOnConnectionFailure(true).build();
        final String baseUrl = "https://api.github.com/";
        final JacksonConverterFactory factory = JacksonConverterFactory.create();
        final Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(baseUrl)
                .client(client)
                .addConverterFactory(factory)
                .build();
        final GitHubService gitHubService = retrofit.create(GitHubService.class);

        try {
            final Response<Repo[]> resp = gitHubService.listRepos("octocat").execute();
            Arrays.asList(resp.body()).forEach(System.out::println);
        } catch (IOException e) {
            e.printStackTrace();
        }
posted @ 2024-04-30 10:59  Bruce.Chang.Lee  阅读(180)  评论(0)    收藏  举报