>

RestTemplate을 사용하여 POST 요청을 RestAPI에 보내려고합니다. 아래 코드를 실행하면 null 응답이 발생합니다. 그러나 http 상태 코드 200이 표시됩니다. 응답 모델을 올바르게 추가 했으므로 모델에 문제가 없습니다. 심지어 응답 유형을 문자열로 변경할 때 응답을주지 않습니다. 제안이 있으십니까?

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


  • 답변 # 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;
           }
    
    

관련 자료

  • 이전 c++ - QtCreator에서 특정 경고를 비활성화
  • 다음 android - EditText의 가치