簡體   English   中英

將請求發布到RestAPI,使用RestTemplate給我一個空響應

[英]Post request to a RestAPI giving me a null response using RestTemplate

我想使用RestTemplate將POST請求發送到RestAPI。 當我執行以下代碼時,它給我的響應為空。 但是,我的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;
       }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM