关于RestTemplate传值及接收返回值均为自定义对象类型的处理

restTemplate是调用restful接口时比较便捷的一种方式,他的方法有很多,getForObject,postForObject,exchange等等,我这里就不赘述了。但是在进行传参的时候,如若传递的参数为自定义的类型,那该如何传递。在这里简单记录下。
首先如果需要传递自定义类型的话,请求方式一定是post类型(get类型应该传递不了,我觉得传递不了,如果大家能传递的话,麻烦私信我让我学习下= =)。我查找了下网上资料,发现没有我想要的,于是我就自己看了下方法,发现可以直接用下面的方式来进行传值:

调用端:

		VerifyParam verifyParam=new VerifyParam();
        SystemParams systemParams=new SystemParams();
        systemParams.setVersion("v9.0");
        TokenInfo tokenInfo=new TokenInfo();
        tokenInfo.setCustomerId(1234L);
        HttpRequest request=null;
        verifyParam.setSystemParams(systemParams);
        verifyParam.setRequest(request);
        verifyParam.setTokenInfo(tokenInfo);

        
        HttpEntity httpEntity=new HttpEntity(verifyParam,null);
        ResponseEntity<VerifyApiRes> response3 = restTemplate.exchange(url, HttpMethod.POST, httpEntity, VerifyApiRes.class);

服务端:

 @RequestMapping(value = "/test_api",method = RequestMethod.POST)
    public BaseRes verifyApi(@RequestBody VerifyParam verifyParam) {
//        System.out.println(request.getAllHeaders());
        System.out.println("进入方法");
        SystemParams systemParams=new SystemParams();
        systemParams=verifyParam.getSystemParams();
        System.out.println(systemParams.getVersion());
        HttpRequest request=verifyParam.getRequest();
        System.out.println(request);
        TokenInfo tokenInfo=verifyParam.getTokenInfo();
        System.out.println(systemParams);
        System.out.println(tokenInfo);
        return new VerifyApiRes(0,systemParams,tokenInfo);
//        return new ErrorRes(1,001,"test_error");
    }

代码其实很简单,我想传递SystemParams ,TokenInfo 等多个自定义对象,post方法需要用@RequestBody来接收请求体,所以我就新建了类,把需要传递的对象放在里面。然后通过HttpEntity的构造方法,直接将需要传递的对象传入即可(这里接收类型是个object,理论上所有的类型都能接收,我试过map,其他的没试过,有需要可以自己试试)HttpEntity httpEntity=new HttpEntity(verifyParam,null);
通过这方式,就可以将自定义的对象传到服务端了。

接收服务端的返回值就更简单了,跟普通的返回接收没什么区别。

 		VerifyApiRes ver=response3.getBody();
        SystemParams s1=ver.getSystemParams();
        System.out.println("result3====================" + ver.getResultCode());

在使用exchange方法获取到ResponseEntity对象后,可以直接getBody来获取。这里可用的方法有很多,有需要可以自己尝试下。我这里就简单记录一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值