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

java对接物联网设备(一)——使用okhttp网络工具框架对接标准API接口

当前无论是在互联网领域,还是物联网项目下,亦或者各类应用类软件,基于http标准接口的对接是目前市面上最常见也是最简单的数据交互方式之一,甚至可以说是最流行的,因为它不依赖的各种插件或者服务。

开发者或者提供服务商对对此乐此不疲,当然json数据格式的普及也是功不可没。这篇文章将教会你如何简单快速使用java对接一个第三方的接口。

一.springboot项目引入okhttp3的pom信息

官网信息如下:OkHttp3官网地址

        <dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.9.0</version></dependency>

二.使用okhttp发送post请求

以下代码可以直接参照使用,按照自己实际业务进行相应调整即可。相关json数据的转换均使用com.alibaba.fastjson的类

public String testOkhttpSendPostData(){/*** 初始化OkHttpClient* 可以指定连接超时时间,读写时间等,避免因网络问题无法正常请求响应*/OkHttpClient client = new OkHttpClient().newBuilder().connectTimeout(10, TimeUnit.SECONDS).writeTimeout(10,TimeUnit.SECONDS).readTimeout(10,TimeUnit.SECONDS).build();MediaType mediaType = MediaType.parse("application/json; charset=utf-8");//设置json格式的body参数JSONObject reqObj = new JSONObject();reqObj.put("pid","202101150001");reqObj.put("name","okhttp");reqObj.put("phone","010");reqObj.put("source","test");RequestBody requestBody = RequestBody.create(mediaType, JSONObject.toJSONString(reqObj));//请求信息头一般根据接口文档要求自定义设置,以map形式表现Map<String, String> reqHeadersObj = new HashMap<>();reqHeadersObj.put("appId","接入方信息");reqHeadersObj.put("ver","接口版本");reqHeadersObj.put("sign","用户签名");//发送请求并从响应中获取结果Headers headers = Headers.of(reqHeadersObj);Request request = new Request.Builder().url(externalDockUrl+"/base/testUrl").headers(headers).method("POST", requestBody).build();String respStr = "";try{//同步执行Response response = client.newCall(request).execute();if(response.body()!=null){respStr = response.body().string();}}catch (Exception e){e.printStackTrace();log.error("测试okhttp发送post请求异常->testOkhttpSendPostData():{}", e.getMessage());return "测试okhttp发送post请求异常";}//解析并返回最终查询结果if(StringUtils.isNotBlank(respStr)) {JSONObject respObject = JSONObject.parseObject(respStr);//判断是否是成功响应的数据if (!"0".equals(respObject.getString("code"))) {return "测试okhttp发送post请求信息未正常返回";}//此处可以按照自己实际的业务处理得到的响应数据log.info("测试okhttp发送post请求信息成功->getJSVehAllDeviceData(),数据详情={}",respObject.getJSONObject("data").toJSONString());}return "success";}

三.使用okhttp发送get请求

利用okhttp发送get请求关键代码展示如下

    //创建OkHttpClient实例对象OkHttpClient okHttpClient = new OkHttpClient();//请求信息头一般根据接口文档要求自定义设置,以map形式表现Map<String, String> reqHeadersObj = new HashMap<>();reqHeadersObj.put("appId","接入方信息");reqHeadersObj.put("ver","接口版本");reqHeadersObj.put("sign","用户签名");Headers headers = Headers.of(reqHeadersObj);//创建Request对象Request request = new Request.Builder().url(externalDockUrl+"/base/testGetUrl?id=010101").headers(headers).get().build();

http://www.xdnf.cn/news/19909.html

相关文章:

  • SVN和Git两种版本管理系统对比
  • Hunyuan-MT-7B模型介绍
  • 使用Vue.js和WebSocket打造实时库存仪表盘
  • window使用ffmep工具,加自定义脚本执行视频转码成h264(运营人员使用)
  • P13929 [蓝桥杯 2022 省 Java B] 山 题解
  • 第三方网站测评:【WEB应用文件包含漏洞(LFI/RFI)的测试步骤】
  • 神经网络模型介绍
  • LeetCode 3132.找出与数组相加的整数2
  • 机器学习算法在Backtrader策略稳定性中的作用分析
  • pytorch可视化工具(训练评估:Tensorboard、swanlab)
  • c#编写的应用程序调用不在同一文件夹下的DLL
  • OpenLayers 入门篇教程 -- 章节三 :掌控地图的视野和交互
  • 下一代自动驾驶汽车系统XIL验证方法
  • 【Doris入门】Doris数据表模型使用指南:核心注意事项与实践
  • select, poll, epoll
  • PyTorch 损失函数与优化器全面指南:从理论到实践
  • 论文理解:Reflexion: Language Agents with Verbal Reinforcement Learning
  • 【正则表达式】 正则表达式运算法优先级的先后是怎么排序的?
  • 【Pytest】解决Pytest中Teardown钩子的TypeError:实例方法与类方法的调用差异
  • Java中最常用的设计模式
  • Mysql主从复制之延时同步
  • 【Linux基础】Linux系统管理:深入理解Linux运行级别及其应用
  • 面经分享二:Kafka、RabbitMQ 、RocketMQ 这三中消息中间件实现原理、区别与适用场景
  • 笔记:卷积神经网络(CNN)
  • VS2015+QT编译protobuf库
  • 【倒计时2个月】好•真题资源+专业•练习平台=高效备赛2025初中古诗文大会
  • 达人数据导出:小青苔如何让达人数据管理效率飙升?
  • 海康摄像头开发---JSON数据与图片分离
  • 近期刷题总结
  • ChartView的基本介绍与使用