Java RestTemplate 实现接口调用并封装到 List 中
以下是使用 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 + ''' +
'}';
}
}
代码说明:
- 构造 Basic Auth 信息:
- 使用
admin:admin5作为用户名和密码,并将其转换为 Base64 编码字符串。
- 使用
- 构造请求头:
- 将 Basic Auth 信息添加到 Authorization 头部。
- 设置 Content-Type 为 APPLICATION_JSON。
- 构造请求体:
- 使用空字符串作为请求体。
- 发送请求:
- 使用 RestTemplate 发送 GET 请求。
- 将请求 URL 设置为
http://100.71.8.94:32600/cuchulainn/openapi/asset/Pod。 - 指定返回类型为 AssetList.class。
- 解析响应:
- 从 response 对象中获取响应体,并获取 data 属性的 list 属性,即 Asset 对象列表。
- 遍历列表并打印结果:
- 遍历 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 信息、返回类型等。
- 为了便于理解,代码示例中省略了必要的异常处理。
原文地址: https://www.cveoy.top/t/topic/owyK 著作权归作者所有。请勿转载和采集!