将请求发布到RestAPI,使用RestTemplate给我一个空响应



我想使用RestTemplate向RestAPI发送POST请求。当我执行下面的代码时,它会给我空响应。但是,我得到了http状态代码200 OK。我已经适当地添加了响应模型,所以模型没有问题。甚至,当我将响应类型更改为String时,它也不会给我响应。有什么建议吗?

MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add("Authorization", "Basic " + "c21sOnBhc3N3b3Jk");
headers.add("Content-Type", "application/json");
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
HttpEntity<NikeIdgenReq> request = new HttpEntity<NikeIdgenReq>(nikeIdgenReq, headers);
String resp = restTemplate.postForObject(url, request, String.class);

在谷歌上搜索后,我找到了一个解决方案,我使响应模型类可以序列化并添加JsonProperty注释,如下面的代码

public class NikeIdgenRes implements Serializable{
@JsonProperty("bundleID")
private String bundleID;
@JsonProperty("ids")
private List<Id> ids = null;
@JsonProperty("gtin")
private String gtin;
@JsonProperty("quantity")
private Integer quantity;
@JsonProperty("types")
private List<String> types = null;
@JsonProperty("meta")
private Meta meta;
// getters & setters
}
public NikeIdgenRes addNikeIdgen(NikeIdgenRq nikeIdgenRq) { 
String url = "https://idgen-dev.connected-product.edflab.nikecloud.net/sensors/id_bundle/v1";
HttpEntity<NikeIdgenRq> httpEntity = new HttpEntity<>(nikeIdgenRq, getHttpHeaders());
ResponseEntity<NikeIdgenRes> result = restTemplateBuilder.build().postForEntity(url, httpEntity, NikeIdgenRes.class);
NikeIdgenRes nikeIdgenRes = new NikeIdgenRes();
nikeIdgenRes.setBundleID(result.getBody().getBundleID());
nikeIdgenRes.setIds(result.getBody().getIds());
nikeIdgenRes.setGtin(result.getBody().getGtin());
nikeIdgenRes.setQuantity(result.getBody().getQuantity());
nikeIdgenRes.setTypes(result.getBody().getTypes());
nikeIdgenRes.setMeta(result.getBody().getMeta());
return nikeIdgenRes;
}

最新更新