以下是使用 Java RestTemplate 实现接口调用并封装到 list 的代码:

import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {

        // 构造 Basic Auth 信息
        String plainCreds = "admin:admin5";
        byte[] plainCredsBytes = plainCreds.getBytes();
        byte[] base64CredsBytes = Base64.getEncoder().encode(plainCredsBytes);
        String base64Creds = new String(base64CredsBytes);

        // 构造请求头
        HttpHeaders headers = new HttpHeaders();
        headers.add("Authorization", "Basic " + base64Creds);
        headers.setContentType(MediaType.APPLICATION_JSON);

        // 构造请求体
        HttpEntity<String> request = new HttpEntity<>("", headers);

        // 发送请求
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<AssetList> response = restTemplate.exchange(
                "http://100.71.8.94:32600/cuchulainn/openapi/asset/Pod",
                HttpMethod.GET,
                request,
                AssetList.class
        );

        // 打印结果
        List<Asset> assetList = response.getBody().getData().getList();
        for (Asset asset : assetList) {
            System.out.println(asset);
        }
    }
}

class AssetList {
    private AssetData data;
    private String errorMessage;
    private int status;
    private String traceId;

    public AssetData getData() {
        return data;
    }

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

    public String getErrorMessage() {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getTraceId() {
        return traceId;
    }

    public void setTraceId(String traceId) {
        this.traceId = traceId;
    }
}

class AssetData {
    private List<Asset> list;
    private int total;
    private int pages;
    private String minorType;

    public List<Asset> getList() {
        return list;
    }

    public void setList(List<Asset> list) {
        this.list = list;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public int getPages() {
        return pages;
    }

    public void setPages(int pages) {
        this.pages = pages;
    }

    public String getMinorType() {
        return minorType;
    }

    public void setMinorType(String minorType) {
        this.minorType = minorType;
    }
}

class Asset {
    private long persistedAt;
    private String resourceId;
    private String code;
    private String description;
    private String type;
    private String uuid;
    private String projectStatus;
    private long createdAt;
    private String manageType;
    private String province;
    private String createdBy;
    private String name;
    private String shortName;
    private String reportSource;
    private long updatedAt;
    private String status;

    public long getPersistedAt() {
        return persistedAt;
    }

    public void setPersistedAt(long persistedAt) {
        this.persistedAt = persistedAt;
    }

    public String getResourceId() {
        return resourceId;
    }

    public void setResourceId(String resourceId) {
        this.resourceId = resourceId;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getType() {
        return type;
    }

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

    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    public String getProjectStatus() {
        return projectStatus;
    }

    public void setProjectStatus(String projectStatus) {
        this.projectStatus = projectStatus;
    }

    public long getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(long createdAt) {
        this.createdAt = createdAt;
    }

    public String getManageType() {
        return manageType;
    }

    public void setManageType(String manageType) {
        this.manageType = manageType;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    public String getName() {
        return name;
    }

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

    public String getShortName() {
        return shortName;
    }

    public void setShortName(String shortName) {
        this.shortName = shortName;
    }

    public String getReportSource() {
        return reportSource;
    }

    public void setReportSource(String reportSource) {
        this.reportSource = reportSource;
    }

    public long getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(long updatedAt) {
        this.updatedAt = updatedAt;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return "Asset{" +
                "persistedAt=" + persistedAt +
                ", resourceId='" + resourceId + ''' +
                ", code='" + code + ''' +
                ", description='" + description + ''' +
                ", type='" + type + ''' +
                ", uuid='" + uuid + ''' +
                ", projectStatus='" + projectStatus + ''' +
                ", createdAt=" + createdAt +
                ", manageType='" + manageType + ''' +
                ", province='" + province + ''' +
                ", createdBy='" + createdBy + ''' +
                ", name='" + name + ''' +
                ", shortName='" + shortName + ''' +
                ", reportSource='" + reportSource + ''' +
                ", updatedAt=" + updatedAt +
                ", status='" + status + ''' +
                '}';
    }
}

代码说明:

  1. 构造 Basic Auth 信息:
    • 使用 admin:admin5 作为用户名和密码,并将其转换为 Base64 编码字符串。
  2. 构造请求头:
    • 将 Basic Auth 信息添加到 Authorization 头部。
    • 设置 Content-Type 为 APPLICATION_JSON。
  3. 构造请求体:
    • 使用空字符串作为请求体。
  4. 发送请求:
    • 使用 RestTemplate 发送 GET 请求。
    • 将请求 URL 设置为 http://100.71.8.94:32600/cuchulainn/openapi/asset/Pod
    • 指定返回类型为 AssetList.class。
  5. 解析响应:
    • 从 response 对象中获取响应体,并获取 data 属性的 list 属性,即 Asset 对象列表。
  6. 遍历列表并打印结果:
    • 遍历 Asset 对象列表,并打印每个对象的属性。

代码中使用了三个类:

  • AssetList: 响应体的根节点,包含 data、errorMessage、status 和 traceId 属性。
  • AssetData: data 属性,包含 list、total、pages 和 minorType 属性。
  • Asset: list 属性中每个元素的数据,包含 persistedAt、resourceId、code、description、type、uuid、projectStatus、createdAt、manageType、province、createdBy、name、shortName、reportSource、updatedAt 和 status 属性。

注意:

  • 实际代码中需要根据接口文档修改相关参数,包括请求 URL、Basic Auth 信息、返回类型等。
  • 为了便于理解,代码示例中省略了必要的异常处理。
Java RestTemplate 实现接口调用并封装到 List 中

原文地址: https://www.cveoy.top/t/topic/owyK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录