杂七杂八之基于ApiPost的Jar包调用
杂七杂八之基于ApiPost的Jar包调用
背景
ApiPost 是一款功能强大的 API 调试与测试工具,与 Postman 类似,但更加贴合国内开发者的使用习惯,并提供了丰富的本地化便捷功能。其中一项关键特性是支持直接调用 Jar 包中的方法,极大提升了开发与测试效率。本文将详细介绍如何通过 ApiPost 实现 Jar 包方法的调用,并结合实际操作过程中可能遇到的问题,提供实用的解决方案。
业务实现
- 我们在ApiPost的官方文档中有类似相关的业务描述,描述的内容如下
.jar程序:通过java命令运行如脚本 apt.execute('cn.example.Demo.jar', ['abc','bcd'])
实际执行命令为 java -jar cn.example.Demo.jar abc bcd 如需要调用jar中指定方法,执行:
apt.execute('cn.example.Demo.jar', ['abc','bcd'], {className: 'com.example.Demo',method: "sayHi"}),实际执行了 cn.example.Demo.jar文件com.example.Demo类sayHi方法,参数是['abc','bcd']
- 坑一:但是在实际操作中,首先遇到了第一个坑,因为ApiPost安装的路径默认情况下是在某个盘的Program Files文件夹下,请特别注意:“Program Files”这两个单词中间是有空格的,然后导致了在ApiPost调用自己内部的工具jar包:jar-main-1.0-SNAPSHOT.jar时候,会报错,所以当我们要调用外部jar包时候,务必请关注安装路径的空格。
- 坑二:当我们实际在应用过程中发下另外一个问题,自己亲测以后发现,不是所有的jar中的方法都是可以调用的,目前测试来看,jar中一定要有一个主入口函数,即main函数,没有的话也会报错。
- 基于上述内容,我们避开坑,就可以编写我们自己的业务了,我们的业务是通过后去的rtsp流并且通过vlc工具进行打开。
- 编写依赖包,具体代码如下
package com.demo;public class vlc {public static void main(String[] args) {System.out.println("Hello World");}public void openWinExe(String appUrl, String videoUrl) {Runtime rn = Runtime.getRuntime();try {String command = String.valueOf(appUrl) + " " + videoUrl;rn.exec(command);} catch (Exception e) {System.out.println("Error win exec!");}}
}
- 使用idea打包成jar包,我这里直接通过“Build Artifact”进行打包。
- 打包好以后,我们在apipost的界面中,后执行操作中编写如下代码
let vlc = 'C:\\Program Files\\VideoLAN\\VLC\\vlc.exe';
// 这里有一个注意事项, url中可能存在转义字符, 所以需要增加双引号
const resource ='"' + pm.variables.get('resource') + '"';
const data = await apt.execute("D:\\1.JAVA\\openVLC\\out\\artifacts\\openVLC_jar\\openVLC.jar", [vlc,resource], {//这里的类名为上述jar包的类名className: 'com.demo.vlc',//这里的方法名为上述jar包的方法名method: "openWinExe"});
- 我们可以看到执行效果如下
到此,我们通过apipost工具调用jar包结束。