如何使用RestTemplate与POJO一起进行Put rest调用

时间:2018-12-28 08:05:04

标签: java spring-boot

如何使用RestTemplate向其余服务发出PUT请求,以便获得响应。

我要打电话给的其他服务是:

@RequestMapping(value = /forgotpassword, method = RequestMethod.PUT, produces = "application/json")
public SuccessResponse resetUserPassword(@RequestBody ResetPasswordDTO resetPasswordDTO) throws GenericException {
    logger.info("--->reset Password");
    return new SuccessResponse(userservice.resetUserPassword(resetPasswordDTO));

}

我需要发送一个具有两个String属性的POJO。

2 个答案:

答案 0 :(得分:1)

(Spring)[https://spring.io/]RestTempalte的方法put没有返回值,因此,如果要从服务器获取响应,请尝试使用POST方法。我将代码修改为这个:

在服务器端:

    @RequestMapping(value = "/forgotpassword", method = RequestMethod.POST, produces = "application/json")
    public ResponseEntity<SuccessResponse> resetUserPassword(@RequestBody ResetPasswordDTO resetPasswordDTO) throws Exception {
        log.info("--->reset Password");
        SuccessResponse response = new SuccessResponse();
        response.setName(resetPasswordDTO.getUsername());
        response.setMessage("success");
        return new ResponseEntity<SuccessResponse>(response, HttpStatus.OK);

    }

在客户端,您可以使用RestTemplate进行请求:

ResetPasswordDTO request = new ResetPasswordDTO();
        request.setPasswork("Huawei@123");
        request.setUsername("c00382802");
        ResponseEntity<SuccessResponse> response =template.postForEntity("http://localhost:8080//forgotpassword",request,SuccessResponse.class);
        System.out.println(response.getBody().toString());

(春季)可以提供更多信息[https://spring.io/]

答案 1 :(得分:0)

对于PUT,请使用RestTemplate.exchange()方法

示例

 MyJaxbRequestDataObjectrequest = createMyJaxbRequestDataObject();
    Map<String, String> uriArguments= createUriArguments();
    String url = restBaseUrl + "/myputservice/{usertId}?servicekey={servicekey}";

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_XML);
    HttpEntity<MyJaxbRequestDataObject> entity = new HttpEntity<MyJaxbRequestDataObject>(request, headers);
    ResponseEntity<MyJaxbResponseDataObject> responseWrapper = shogunRestTemplate.exchange(url, HttpMethod.PUT, entity, MyJaxbResponseDataObject.class, uriArguments);
    MyJaxbResponseDataObjectresponse = responseWrapper.getBody();