java用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);
}
请求帮助,谢谢