java用feign发请求,参数可以为一个字符串吗?

文章讲述了如何使用Feign客户端代替RestTemplate来发送一个POST请求,其中请求体是经过AES加密的字符串。在RestTemplate的示例中,展示了加密、发送请求和解密的过程。而在Feign的实现中,遇到了如何传递无名参数(仅加密字符串)的困扰。寻求帮助如何在Feign接口中正确构造这样的请求。

我想用feign发送一个post请求,但对方接收的参数类型是一个加密后的字符串,放在body中,请问如何做?我现在的解决方法是用resttemplate用postforobject发字符串,我想修改成用feign来完成

用resttemplate可以做到,代码如下:

@GetMapping("/rest")
    @ApiOperation(value = "登录1", notes = "登录1")
    public R<TokenVO> selectAll1(LoginDTO loginDTO, HttpServletResponse response) throws Exception {
        //加密
        String s = JSON.toJSONString(loginDTO);
        String encrypt = AesUtil.Encrypt(s, sKey);

        //发请求,获取数据
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);

        HttpEntity<String> request = new HttpEntity<>(encrypt, headers);
        String forObject = restTemplate.postForObject(url,request,String.class);

        //解析数据
        JSONObject jsonObject = JSON.parseObject(forObject);
        String data = jsonObject.getObject("data", String.class);
        String decrypt = AesUtil.Decrypt(data, sKey);
        Map<String, String> jsonMap = JSON.parseObject(decrypt, new TypeReference<HashMap<String, String>>() {});
        TokenVO tokenVO = new TokenVO();
        tokenVO.setToken(jsonMap.get("token"));
        return R.success(tokenVO);
    }

用feign不知道怎么发送参数,因为只有字符串,没参数名称。

feign的代码如下:

@GetMapping
    @ApiOperation(value = "登录", notes = "登录")
    public R selectAll(LoginDTO loginDTO) throws Exception {
        String s = JSON.toJSONString(loginDTO);
        String encrypt = AesUtil.Encrypt(s, sKey);
        String loginData = loginClient.login(encrypt);
        JSONObject jsonObject = JSON.parseObject(loginData);
        String data = jsonObject.getObject("data", String.class);
        return R.success(data);
    }






@Service
@FeignClient(name = "LoginFeignClient",url="${url}")
public interface LoginClient {
    @PostMapping(headers = {"Content-Type=application/json"})
    public String login(@RequestBody String s);

}

请求帮助,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值