当前位置: 首页 > article >正文

RestTemplate远程调用接口方式

1.Post(body空参)

         也就是说需要给一个空的json

         代码:

String getDeviceUrl = this.MOVABLE_URL + "detected-data/getMachineLists";
// 远程调用
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8));
// 请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("token",token);
// 请求体
HttpEntity<String> requestEntity = new HttpEntity<>("{}", headers);
String resultString = restTemplate.postForObject(getDeviceUrl, requestEntity,String.class);
JSONObject jo = JSONObject.fromObject(resultString);

2.Post(表单)

        表单不能给json参数,不然被调用方接收不到参数

        代码:

String url = this.INTERFACE_CLIENT_URL + "/jkglApi/saveLog";
// 远程调用
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8));
// 请求头 指定Content-Type为application/x-www-form-urlencoded
HttpHeaders headers = new HttpHeaders();
//headers.setContentType(MediaType.APPLICATION_JSON);
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

// 构建参数
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("jkglApiCode", interfaceLog.getJkglApiCode());
params.add("ipAddress", interfaceLog.getIpAddress());
params.add("syncDate", interfaceLog.getSyncDate());
params.add("createDate", interfaceLog.getCreateDate());
params.add("statusSync", interfaceLog.getStatusSync().toString());

// 设置请求参数
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(params, headers);

// 发送POST请求
ResponseEntity<String> response = restTemplate.postForEntity(url, requestEntity, String.class);

String resultString = response.getBody();
JSONObject jo = JSONObject.fromObject(resultString);

        使用RestTemplate进行表单传参的注意事项
在使用 RestTemplate 进行表单传参时,有一些注意事项需要我们注意。
1.设置Content-Type为application/x-www-form-urlencoded
在发送POST请求时,我们需要设置请求头的Content-Type为 application/x-www-fomm-urlencoded,表示请求体的内容是表单参数。通过 HtpHeaders 类的 setContentType()方法可以实现此功能。
2.使用MultiValueMap存储表单参数
MuivalueMap 是Spring框架提供的一个接口,它继承自 Map 接口,并提供了一些额外的方法,用于存储键值对,在使用 RestTemplate 发送表单参数时,我们可以使用 MutValueMap 来存储表单参数,通过 add0 方法添加键值对。
3.使用HttpEntity封装请求体内容HtpEntty 是 RestTemplate 发送HTTP请求时的一个重要类,它用于封装请求体内容。在发送POST请求时,我们需要创建一个 HpEnity 对象,并将 MultiValueMap 对象和 HttpHeaders 对象作为参数传递进去。 

 

3.Post(表单,方式2)

        代码:  这种好像是将参数放到url后面,按理说post不应该这样,但不知道为什么,可以正常访问,被调用方也能获取,不知道为啥....

String url = this.MOVABLE_URL + "users/login";
// 远程调用
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8));
// 请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
// 构建参数
Map<String, String> params= new HashMap();
params.put("username", MOVABLE_USERNAME);
params.put("password", MOVABLE_PASSWORD);
// 2. 构建 URL
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
params.forEach(builder::queryParam);
// 请求
ResponseEntity<String> response = restTemplate.exchange(
                    builder.build().toUri(),
                    HttpMethod.POST,
                    new HttpEntity<>(headers),
                    String.class
            );
String resultString = response.getBody();
JSONObject jo = JSONObject.fromObject(resultString);

持续更新....


http://www.kler.cn/a/612322.html

相关文章:

  • 什么是视图,数据库的视图本质上就是个提前写好的sql语句,创建的一个虚拟表
  • C语言中把函数声明为inline是什么意思?
  • Nginx RTMP 处理模块 (ngx_rtmp_handler.c) 详细分析
  • Go语言分布式锁实战:dlock助力构建高并发稳定系统
  • 工作流引擎Flowable介绍及SpringBoot整合使用实例
  • ubuntu服务器server版安装,ssh远程连接xmanager管理,改ip网络连接。图文教程
  • 什么是 Promise?
  • 在鸿蒙 ArkUI 中使用本地数据缓存
  • 【数学建模】(启发式算法)蚁群算法(Ant Colony Optimization)的详解与应用
  • 深入理解椭圆曲线密码学(ECC)与区块链加密
  • 蓝桥杯模拟题--约数的个数(约数和质因数的区别)
  • spring-ai ollama小试牛刀
  • DaemonSet 与 Deployment 的主要区别
  • VSCode 抽风之 两个conda环境同时在被激活
  • 数字图像处理 -- 霍夫曼编码(无损压缩)练习
  • 解决electron-builder vue 打包后element-ui字体图标不显示问题
  • Redis之缓存双写一致性理论分析
  • 数字孪生技术:重塑UI前端的未来
  • C++实现Nadaraya - Watson 核回归计算难题实录:从 O (n²) 到高效优化
  • MybatisPlus(SpringBoot版)学习第四讲:常用注解