【问题标题】:POST JSON object using Spring REST template使用 Spring REST 模板发布 JSON 对象
【发布时间】:2016-11-29 00:23:32
【问题描述】:

我正在使用 spring rest 模板发布 JSON 对象。它适用于较少的数据,但发布更多数据会引发 Request URI too long 错误。

       final String url = getServiceUrl() + "/rs/doc?param1=test";

        RestTemplate restTemp=getRestTemplate();

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(org.springframework.http.MediaType.APPLICATION_JSON);

        //set your entity to send
        HttpEntity<MyBean> request = new HttpEntity<MyBean>(myBean,headers);

        List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
        messageConverters.add(new MappingJacksonHttpMessageConverter());
        messageConverters.add(new FormHttpMessageConverter());
        restTemp.getMessageConverters().addAll(messageConverters);

        // send it!
        responseEntity = restTemp.exchange(url, HttpMethod.POST, request, String.class);

请求正文应该接受 POST 方法中的无限数据。但这似乎在这里不起作用。谁能指导一下。

【问题讨论】:

    标签: json spring rest spring-mvc spring-rest


    【解决方案1】:

    下面对我来说很好用。我已在标题中添加了安全详细信息以及我需要发送的 post 参数。

    RestTemplate restTemplate = new RestTemplate();
    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
    headers.set(ApplicationConstants.API_KEY, ApplicationConstants.TEST_API_KEY_VALUE);
    headers.set(ApplicationConstants.AUTH_TOKEN, ApplicationConstants.TEST_API_TOKEN_VALUE);
    MultiValueMap<String, String> postParameters = new LinkedMultiValueMap<String, String>();
    postParameters.add("purpose", cust.getPaymentPurpose());
    postParameters.add("buyer_name", cust.getCustomerName());
    postParameters.add("email", cust.getCustomerEmailId());
    postParameters.add("phone", cust.getCustomerMobNum());
    postParameters.add("send_email", "False");
    postParameters.add("send_sms", "False");
    HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(postParameters, headers);
    ResponseEntity<String> result = restTemplate.exchange("YOUR URL", HttpMethod.POST, requestEntity, String.class);
    OnlinePaymentModel paymentModel = gson.fromJson(result.getBody(), OnlinePaymentModel.class);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-27
      • 2015-10-14
      • 2019-10-09
      • 2017-09-08
      • 2016-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多