快递100快递物流查询、寄件等功能java-demo

快递100API内支持很多的快递功能,能够满足大家的需求,我们还可以自定义选择快递接口,支持多家快递公司,顺丰、京东、EMS、邮政、百世、圆通、韵达、申通等等,让快递查询更快捷。下面的java-demo 是由快递100官方提供的java sdk,方便调试使用。集成了实时查询、订阅推送、智能判断、云打印相关、电子面单相关、短信、商家寄件等接口。

功能描述

  • 提供了快递100接口请求参数实体类、返回实体类。

  • 提供测试类调试。

  • 支持maven、gradle引入

接入前准备

  • java-demo使用和测试可参考java-demo-test

  • git clone https://github.com/kuaidi100-api/java-demo.git

  • 对接物流跟踪接口,你需要开发订阅接口(将单号和快递公司编码订阅给快递100。有订阅接口的.net,php和java版本demo,你可以参考下。还有自己开发一个推送接口(接收快递100推送的物流轨迹),开发完后登录快递100沙箱后台调试推送接口,调试成功后可在沙箱后台自助配置推送接口。

  • https://api.kuaidi100.com/register/enterprise 密钥获取页

Add Config

使用sdk的可以先配置account.properties,账号信息可以登录快递100获取。能返回多种格式的、完整的查询结果,具备众多参数供调用。这种接口需到快递100指定的页面进行申请,通过申请后才能使用。https://poll.kuaidi100.com/manager/page/myinfo/enterprise (注意不要泄露快递100的账号密码以及授权key等敏感信息,以防被他人盗用!!!)

Gradle
dependencies {implementation 'com.github.kuaidi100-api:sdk:1.0.4'
}
Maven<dependency><groupId>com.github.kuaidi100-api</groupId><artifactId>sdk</artifactId><version>1.0.4</version></dependency>
Use Junit Test
public class BaseServiceTest {private String key = PropertiesReader.get("key");private String customer = PropertiesReader.get("customer");private String secret = PropertiesReader.get("secret");private String siid = PropertiesReader.get("siid");private String userid = PropertiesReader.get("userid");private String tid = PropertiesReader.get("tid");private String secret_key = PropertiesReader.get("secret_key");private String secret_secret = PropertiesReader.get("secret_secret");/*** 查询物流轨迹*/@Testpublic void testQueryTrack() throws Exception{QueryTrackReq queryTrackReq = new QueryTrackReq();QueryTrackParam queryTrackParam = new QueryTrackParam();queryTrackParam.setCom(CompanyConstant.YT);queryTrackParam.setNum("YT9383342193097");queryTrackParam.setPhone("17725390266");String param = new Gson().toJson(queryTrackParam);queryTrackReq.setParam(param);queryTrackReq.setCustomer(customer);queryTrackReq.setSign(SignUtils.querySign(param ,key,customer));IBaseClient baseClient = new QueryTrack();System.out.println(baseClient.execute(queryTrackReq));}/*** 快递信息地图轨迹*/@Testpublic void testQueryMapView() throws Exception{QueryTrackReq queryTrackReq = new QueryTrackReq();QueryTrackParam queryTrackParam = new QueryTrackParam();queryTrackParam.setCom(CompanyConstant.YD);queryTrackParam.setNum("4311159956248");queryTrackParam.setPhone("17725390266");queryTrackParam.setFrom("河北保定市");queryTrackParam.setTo("湖南岳阳市");queryTrackParam.setResultv2("2");String param = new Gson().toJson(queryTrackParam);queryTrackReq.setParam(param);queryTrackReq.setCustomer(customer);queryTrackReq.setSign(SignUtils.querySign(param ,key,customer));IBaseClient baseClient = new QueryTrackMap();HttpResult result = baseClient.execute(queryTrackReq);QueryTrackMapResp queryTrackMapResp = new Gson().fromJson(result.getBody(),QueryTrackMapResp.class);System.out.println(queryTrackMapResp);}/*** 订阅*/@Testpublic void testSubscribe() throws Exception{SubscribeParameters subscribeParameters = new SubscribeParameters();subscribeParameters.setCallbackurl("http://www.baidu.com");subscribeParameters.setPhone("17725390266");SubscribeParam subscribeParam = new SubscribeParam();subscribeParam.setParameters(subscribeParameters);subscribeParam.setCompany(CompanyConstant.ST);subscribeParam.setNumber("773039762404825");subscribeParam.setKey(key);SubscribeReq subscribeReq = new SubscribeReq();subscribeReq.setSchema(ApiInfoConstant.SUBSCRIBE_SCHEMA);subscribeReq.setParam(new Gson().toJson(subscribeParam));IBaseClient subscribe = new Subscribe();System.out.println(subscribe.execute(subscribeReq));}/*** 智能识别接口(正式用户可以使用)*/@Testpublic void testAutoNum() throws Exception{AutoNumReq autoNumReq = new AutoNumReq();autoNumReq.setKey(key);autoNumReq.setNum("773039762404825");IBaseClient baseClient = new AutoNum();System.out.println(baseClient.execute(autoNumReq));}/*** 电子面单图片接口*/@Testpublic void testPrintImg() throws Exception{PrintImgParam printImgParam = new PrintImgParam();printImgParam.setKuaidicom(CompanyConstant.ZJS);printImgParam.setSendManName("张三");printImgParam.setSendManMobile("15999566666");printImgParam.setSendManPrintAddr("广东省深圳市南山区科技南十二路");printImgParam.setRecManName("李四");printImgParam.setRecManMobile("15999566666");printImgParam.setRecManPrintAddr("北京市海淀区xxx路");printImgParam.setType("10");printImgParam.setTempid("180c7c8f646742ca871a92c976392b05");printImgParam.setCount("1");String param = new Gson().toJson(printImgParam);String t = System.currentTimeMillis() + "";String sign = SignUtils.printSign(param,t,key,secret);PrintReq printReq = new PrintReq();printReq.setKey(key);printReq.setMethod(ApiInfoConstant.ELECTRONIC_ORDER_PIC_METHOD);printReq.setSign(sign);printReq.setParam(param);printReq.setT(t);IBaseClient printImg = new PrintImg();System.out.println(printImg.execute(printReq));}/*** 电子面单html接口*/@Testpublic void testPrintHtml() throws Exception{ManInfo recManInfo  = new ManInfo();recManInfo.setName("张三");recManInfo.setMobile("15999566666");recManInfo.setPrintAddr("广东省深圳市南山区科技南十二路");ManInfo sendManInfo = new ManInfo();sendManInfo.setName("李四");sendManInfo.setMobile("15999566666");sendManInfo.setPrintAddr("北京市海淀区xxx路");PrintHtmlParam printHtmlParam = new PrintHtmlParam();printHtmlParam.setKuaidicom(CompanyConstant.ZJS);printHtmlParam.setCount(2);printHtmlParam.setNeedChild(1);//如果需要返回电子面单,需要设置printHtmlParam.setNeedTemplate("1");printHtmlParam.setSendMan(sendManInfo);printHtmlParam.setRecMan(recManInfo);String t = System.currentTimeMillis() + "";String param = new Gson().toJson(printHtmlParam);String sign = SignUtils.printSign(param,t,key,secret);PrintReq printReq = new PrintReq();printReq.setKey(key);printReq.setMethod(ApiInfoConstant.ELECTRONIC_ORDER_HTML_METHOD);printReq.setT(t);printReq.setSign(sign);printReq.setParam(param);IBaseClient printHtml = new PrintHtml();System.out.println(printHtml.execute(printReq));}/*** 电子面单打印*/@Testpublic void testPrintCloud() throws Exception{ManInfo recManInfo  = new ManInfo();recManInfo.setName("张三");recManInfo.setMobile("15999566666");recManInfo.setPrintAddr("广东省深圳市南山区科技南十二路");ManInfo sendManInfo = new ManInfo();sendManInfo.setName("李四");sendManInfo.setMobile("15999566666");sendManInfo.setPrintAddr("北京市海淀区xxx路");PrintCloudParam printCloudParam = new PrintCloudParam();printCloudParam.setKuaidicom(CompanyConstant.ZJS);printCloudParam.setCount("1");printCloudParam.setSiid(siid);printCloudParam.setTempid("180c7c8f646742ca871a92c976392b05");printCloudParam.setSendMan(sendManInfo);printCloudParam.setRecMan(recManInfo);String param = new Gson().toJson(printCloudParam);String t = System.currentTimeMillis() + "";PrintReq printReq = new PrintReq();printReq.setT(t);printReq.setKey(key);printReq.setMethod(ApiInfoConstant.ELECTRONIC_ORDER_PRINT_METHOD);printReq.setSign(SignUtils.printSign(param,t,key,secret));printReq.setParam(param);IBaseClient baseClient = new PrintCloud();System.out.println(baseClient.execute(printReq));}/*** 云打印自定义*/@Testpublic void testCloudCustom() throws Exception{CloudPrintCustomParam cloudPrintCustomParam = new CloudPrintCustomParam();cloudPrintCustomParam.setSiid(siid);cloudPrintCustomParam.setCallBackUrl("http://www.baidu.com");cloudPrintCustomParam.setTempid("180c7c8f646742ca871a92c976392b05");String t = System.currentTimeMillis() + "";String param = new Gson().toJson(cloudPrintCustomParam);PrintReq printReq = new PrintReq();printReq.setKey(key);printReq.setMethod(ApiInfoConstant.CLOUD_PRINT_CUSTOM_METHOD);printReq.setT(t);printReq.setSign(SignUtils.printSign(param,t,key,secret));printReq.setParam(param);IBaseClient baseClient = new CloudPrintCustom();System.out.println(baseClient.execute(printReq));}/*** 云打印附件*/@Testpublic void testCloudAttachment() throws Exception{CloudPrintAttachmentParam cloudPrintAttachmentParam = new CloudPrintAttachmentParam();cloudPrintAttachmentParam.setSiid(siid);cloudPrintAttachmentParam.setCallBackUrl("http://www.baidu.com");String t = System.currentTimeMillis() + "";String param = new Gson().toJson(cloudPrintAttachmentParam);CloudAttachmentReq cloudPrintAttachmentReq = new CloudAttachmentReq();cloudPrintAttachmentReq.setKey(key);cloudPrintAttachmentReq.setMethod(ApiInfoConstant.CLOUD_PRINT_ATTACHMENT_METHOD);cloudPrintAttachmentReq.setT(t);cloudPrintAttachmentReq.setSign(SignUtils.printSign(param,t,key,secret));cloudPrintAttachmentReq.setParam(param);cloudPrintAttachmentReq.setFile(new File("C:\\Users\\Administrator.-20171106WFEKLN\\Desktop\\1.jpg"));IBaseClient baseClient = new CloudPrintAttachment();System.out.println(baseClient.execute(cloudPrintAttachmentReq));}/*** 复打*/@Testpublic void testCloudPrintOld() throws Exception{PrintReq printReq = new PrintReq();CloudPrintOldParam cloudPrintOldParam = new CloudPrintOldParam();cloudPrintOldParam.setTaskId("D21DB1AC74A260E6F5604FC43B4598B8");String t = System.currentTimeMillis() + "";String param = new Gson().toJson(cloudPrintOldParam);printReq.setKey(key);printReq.setMethod(ApiInfoConstant.CLOUD_PRINT_OLD_METHOD);printReq.setT(t);printReq.setSign(SignUtils.printSign(param,t,key,secret));printReq.setParam(param);IBaseClient cloudPrintOld = new CloudPrintOld();System.out.println(cloudPrintOld.execute(printReq));}/*** 发送短信*/@Testpublic void testSendSms() throws Exception{SendSmsReq sendSmsReq = new SendSmsReq();sendSmsReq.setCallback("http://www.baidu.com");Map<String,String> content = new HashMap<String, String>();content.put("username","测试用户");sendSmsReq.setContent(new Gson().toJson(content));sendSmsReq.setPhone("15994708912");sendSmsReq.setSeller("贵司名称");sendSmsReq.setUserid(userid);sendSmsReq.setTid(tid);sendSmsReq.setSign(SignUtils.smsSign(key,userid));IBaseClient sendSms = new SendSms();System.out.println(sendSms.execute(sendSmsReq));}/*** 商家寄件查询运力*/@Testpublic void testBorderQuery() throws Exception {BOrderQueryReq bOrderQueryReq = new BOrderQueryReq();bOrderQueryReq.setSendAddr("福田区华强南");String t = String.valueOf(System.currentTimeMillis());String param = new Gson().toJson(bOrderQueryReq);PrintReq printReq = new PrintReq();printReq.setKey(key);printReq.setSign(SignUtils.printSign(param,t,key,secret));printReq.setT(t);printReq.setParam(param);printReq.setMethod(ApiInfoConstant.B_ORDER_QUERY_TRANSPORT_CAPACITY_METHOD);IBaseClient bOrder = new BOrder();System.out.println(bOrder.execute(printReq));}/*** 商家寄件*/@Testpublic void testBorder() throws Exception {PrintReq printReq = new PrintReq();BOrderReq bOrderReq = new BOrderReq();bOrderReq.setKuaidicom(CompanyConstant.ZT);bOrderReq.setSendManName("张三");bOrderReq.setSendManMobile("15966666666");bOrderReq.setSendManPrintAddr("广东深圳市福田区华强南");bOrderReq.setRecManName("李四");bOrderReq.setRecManMobile("15966666666");bOrderReq.setRecManPrintAddr("广东深圳市南山区金蝶软件园");bOrderReq.setCallBackUrl("http://www.baidu.com");bOrderReq.setCargo("文件");bOrderReq.setRemark("测试下单,待会取消");bOrderReq.setWeight("1");bOrderReq.setSalt("123456");bOrderReq.setServiceType("标准快递");String t = String.valueOf(System.currentTimeMillis());String param = new Gson().toJson(bOrderReq);printReq.setKey(key);printReq.setSign(SignUtils.printSign(param,t,key,secret));printReq.setT(t);printReq.setParam(param);printReq.setMethod(ApiInfoConstant.B_ORDER_SEND_METHOD);IBaseClient bOrder = new BOrder();System.out.println(bOrder.execute(printReq));}/*** 商家寄件获取验证码*/@Testpublic void testBorderGetCode() throws Exception {PrintReq printReq = new PrintReq();BOrderGetCodeReq bOrderGetCodeReq = new BOrderGetCodeReq();bOrderGetCodeReq.setTaskId("4D07550D8E685E06B3C679632E68ACDD");bOrderGetCodeReq.setOrderId("100012022010566");String t = String.valueOf(System.currentTimeMillis());String param = new Gson().toJson(bOrderGetCodeReq);printReq.setKey(key);printReq.setSign(SignUtils.printSign(param,t,key,secret));printReq.setT(t);printReq.setParam(param);printReq.setMethod(ApiInfoConstant.B_ORDER_CODE_METHOD);IBaseClient bOrder = new BOrder();System.out.println(bOrder.execute(printReq));}/*** 商家寄件取消*/@Testpublic void testBorderCancel() throws Exception {PrintReq printReq = new PrintReq();BOrderCancelReq bOrderCancelReq = new BOrderCancelReq();bOrderCancelReq.setTaskId("4D07550D8E685E06B3C679632E68ACDD");bOrderCancelReq.setOrderId("100012022010566");bOrderCancelReq.setCancelMsg("测试单取消");String t = String.valueOf(System.currentTimeMillis());String param = new Gson().toJson(bOrderCancelReq);printReq.setKey(key);printReq.setSign(SignUtils.printSign(param,t,key,secret));printReq.setT(t);printReq.setParam(param);printReq.setMethod(ApiInfoConstant.B_ORDER_CANCEL_METHOD);IBaseClient bOrder = new BOrder();System.out.println(bOrder.execute(printReq));}/*** C端查询运力*/@Testpublic void testCOrderQuery() throws Exception {COrderQueryReq cOrderQueryReq = new COrderQueryReq();cOrderQueryReq.setAddress("广东省深圳市南山区华强南");cOrderQueryReq.setSecret_key(secret_key);cOrderQueryReq.setSecret_code(CloudApiCodeConstant.ORDER_QUERY_EXPRESS);cOrderQueryReq.setSecret_sign(SignUtils.cloudSign(secret_key, secret_secret));IBaseClient cloudBase = new CloudBase();System.out.println(cloudBase.execute(cOrderQueryReq));}/*** c端寄件*/@Testpublic void testCOrder() throws Exception {COrderReq cOrderReq = new COrderReq();cOrderReq.setCom(CompanyConstant.JD);cOrderReq.setSendManName("张三");cOrderReq.setSendManMobile("15966666666");cOrderReq.setSendManPrintAddr("广东深圳市南山区金蝶软件园");cOrderReq.setRecManName("李四");cOrderReq.setRecManMobile("15966666666");cOrderReq.setRecManPrintAddr("广东深圳市福田区华强南");cOrderReq.setCallBackUrl("http://www.baidu.com");cOrderReq.setCargo("文件");cOrderReq.setRemark("测试下单,待会取消");cOrderReq.setWeight("1");cOrderReq.setSalt("123456");cOrderReq.setSecret_key(secret_key);cOrderReq.setSecret_code(CloudApiCodeConstant.ORDER);cOrderReq.setSecret_sign(SignUtils.cloudSign(secret_key,secret_secret));IBaseClient cloudBase = new CloudBase();System.out.println(cloudBase.execute(cOrderReq));}/*** c端取消寄件*/@Testpublic void testCOrderCancel() throws Exception {COrderCancelReq cOrderCancelReq = new COrderCancelReq();cOrderCancelReq.setTaskId("B19BB4C6F33BE9E735A63D4142557751");cOrderCancelReq.setOrderId("11115207");cOrderCancelReq.setCancelMsg("测试单");cOrderCancelReq.setSecret_key(secret_key);cOrderCancelReq.setSecret_code(CloudApiCodeConstant.ORDER_CANCEL);cOrderCancelReq.setSecret_sign(SignUtils.cloudSign(secret_key,secret_secret));IBaseClient cloudBase = new CloudBase();System.out.println(cloudBase.execute(cOrderCancelReq));}
}

快递100apiFAQ

问题1.快递100api接口里sign该如何处理?

快递100加密方式统一为MD5后转大写,可以参考签名

org.apache.commons.codec.digest.DigestUtils.md5Hex(msg).toUpperCase();

问题2.使用了快递100订阅接口后,该如何处理回调接口?

可以参考推送订阅回调

public SubscribeResp callBackUrl(HttpServletRequest request){String param = request.getParameter("param");String sign = request.getParameter("sign");//建议记录一下这个回调的内容,方便出问题后双方排查问题log.debug("快递100订阅推送回调结果|{}|{}",param,sign);//订阅时传的salt,没有可以忽略String salt = "";String ourSign = SignUtils.sign(param + salt);SubscribeResp subscribeResp = new SubscribeResp();subscribeResp.setResult(Boolean.TRUE);subscribeResp.setReturnCode("200");subscribeResp.setMessage("成功");//加密如果相等,属于快递100推送;否则可以忽略掉当前请求if (ourSign.equals(sign)){//TODO 业务处理return subscribeResp;}return null;}

问题3.使用电子面单图片接口,该如何处理返回的base64图片?

返回的是一个字符串json数组,多个子单时会有多个。

添加前缀“data:image/png;base64,”,把“\\n”替换成“”;可以参考处理返回的base64字符串

public List<String> getBase64Img(String imgBase64){List<String> stringList= new Gson().fromJson(imgBase64,new TypeToken<List<String>>() {}.getType());List<String> base64Img = new ArrayList<String>();if (stringList != null && stringList.size()>0){for (String s : stringList) {s = "data:image/png;base64,"+s.replace("\\\\n","");base64Img.add(s);}}return base64Img;}

问题4.云平台其他接口该如何对接?

第一步:根据对应接口新增对应的请求参数类,继承CloudBaseReq,类似快递寄件接口取消寄件请求参数类

public class COrderCancelReq extends CloudBaseReq{/*** 任务ID*/private String taskId;/*** 订单ID*/private String orderId;/*** 取消原因,例:暂时不寄件了*/private String cancelMsg;
}

第二步:调用时只需要更换成第一步新建的实体

public void testCOrderCancel() throws Exception {COrderCancelReq cOrderCancelReq = new COrderCancelReq();cOrderCancelReq.setTaskId("B19BB4C6F33BE9E735A63D4142557751");cOrderCancelReq.setOrderId("11115207");cOrderCancelReq.setCancelMsg("测试单");cOrderCancelReq.setSecret_key(secret_key);cOrderCancelReq.setSecret_code(CloudApiCodeConstant.ORDER_CANCEL);cOrderCancelReq.setSecret_sign(SignUtils.cloudSign(secret_key,secret_secret));IBaseClient cloudBase = new CloudBase();System.out.println(cloudBase.execute(cOrderCancelReq));
}

tips:key、secret、code等账号信息获取,云平台->买家中心-我的接口

怎么用java调用快递接口查询和寄件等功能java-demo相关推荐

  1. java调用身份证接口查询

    在这里,我所使用的是网易有道的接口,把网址http://www.youdao.com/smartresult-xml /search.s?type=id&q= + 要查询的身份证号,粘贴到浏览 ...

  2. 第二篇:java调用公共数据接口:上海市车辆基本信息查询(java调用soap接口)

    java调用公共数据接口:上海市数据公共开放平台 前言 一.找个接口作为案例 二.查看文档 1.查看接口文档 2.确认接口地址与参数 三.编码(找代码直接跳这里!) 1.先创建一个返回数据的实体类 2 ...

  3. 第一篇:java调用公共数据接口:QQ在线状态查询(java调用http接口)

    java调用公共数据接口: webxml 前言 一.以webxml上的一个接口为案例 二.查看接口文档 1.查看支持的调用方式 2.确认接口地址与参数 三.编码(找代码直接跳这里!) 1.配置Rest ...

  4. java实现快递物流查询(阿里云快递物流)

    java实现快递物流查询(阿里云快递物流) 链接:阿里云快递物流直达通道 购买成功接下来去图下找到AppCode,调用快递接口时用的到 接下来直接贴上代码 /*** 查询物流信息* @return*/ ...

  5. 如何调用封装工具类调用网上接口查询工作日

    如何调用封装工具类调用网上接口查询工作日 这里的编辑器是STS,用的springboot集成环境: 先引进pom.xml依赖包 <?xml version="1.0" enc ...

  6. Java 调用http接口(基于OkHttp的Http工具类方法示例)

    目录 Java 调用http接口(基于OkHttp的Http工具类方法示例) OkHttp3 MAVEN依赖 Http get操作示例 Http Post操作示例 Http 超时控制 工具类示例 Ja ...

  7. Java通过快递鸟-查询物流

    Java通过快递鸟-查询物流 先申请快递鸟账号 填入账号信息 //电商IDprivate String EBusinessID = EBusinessID;//电商加密私钥,快递鸟提供,注意保管,不要 ...

  8. java调用飞信接口免费短信发送到对方手机

    原文:java调用飞信接口免费短信发送到对方手机 源代码下载地址:http://www.zuidaima.com/share/1550463460084736.htm 飞信发送信息限(移动用户) 1. ...

  9. java调用接口速度慢,Java 调用 webservice 接口,为什么这么慢

    Java 调用 webservice 接口,为什么这么慢,有没有好的优化方案,本人目前改成 http 方式发 soap 消息调用,速度依旧很慢,维持在平均 100ms 下不来. 之前用 cxf 的 J ...

最新文章

  1. mysql 线程内存 回收_MySQL内存使用-线程独享
  2. JS知识点笔记-常用方法
  3. 哈工大计算机学院刘志岩,感知计算研究中心
  4. Activity的启动过程(源码API27)
  5. Smartforms 设置纸张打印格式
  6. 【CMS】安装CMS
  7. 在Eigrp做不等值路由的负载均衡
  8. matlab基本矩阵运算,matlab的矩阵基本运算问题已知A=[a,b,c;d,e,f;h,I,j],B=[l,m,n;x,y,z;q,o,p]...
  9. 2018 蓝桥杯省赛 B 组模拟赛(一)I. 天上的星星(二维前缀和)
  10. form:errors path 不显示出错信息_视觉激光雷达信息融合与联合标定
  11. 如何在JavaScript中检查变量是否为整数?
  12. 关于局云混合的新思路
  13. http请求状态码表示的意义
  14. Zephyr下计算耗时
  15. 米家扫地机器人怎么加水_时隔两年半终于更新 贵了500元的小米米家扫地机器人1S值得买吗?...
  16. 基于ResNet深度时空残差网络的城市交通流预测
  17. 如何破解私域留存?四大核心环节拆解锁客关键能力
  18. linux磁盘转gpt,Linux中磁盘如何转换GPT格式
  19. 今天来和大家一起分享一下好玩的游戏---美国农场主
  20. 搬砖的成长之路——VMWare网络原理

热门文章

  1. new和delete与内存分配
  2. android 有道笔记 装在哪个目录,有道云笔记文件保存在哪里在哪个路径下
  3. 物联网是什么?物联网应用场景有哪些?物联网有什么好处?
  4. win7开机启动项设置_Win7系统电脑使用注册表查看开机启动项操作方法
  5. android 电池监测工具,安卓最强电池监控器Battery Monitor Widget Pro
  6. 德尔福ESR雷达测试
  7. 【安规】电气间隙和爬电距离如何确定
  8. 7 openVINO 反光背心和安全帽检测
  9. ADSL拨号密码如何修改?
  10. 2022年全球与中国太阳传感器市场现状及未来发展趋势