【问题标题】:Post request to a RestAPI giving me a null response using RestTemplate使用 RestTemplate 向 RestAPI 发布请求给我一个空响应
【发布时间】:2018-07-31 11:11:32
【问题描述】:

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

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);

【问题讨论】:

  • 请有任何建议......
  • 您正在发出一个 POST 请求,因此响应是在被调用的 API 的方法中配置的。如果是您自己的方法,请添加 @ResponseBody 例如。如果是外部 API,则根本没有配置响应。

标签: java spring-boot resttemplate


【解决方案1】:

谷歌搜索后我找到了解决方案,我已将响应模型类设为可序列化 并在下面的代码中添加 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;
       }

【讨论】:

    猜你喜欢
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多