1.引言
在日常程序的调用中,有些时候由于数据问题需要重新执行,又不方便通过页面再次提交数据,例如某些数据的每日跑批量,一但执行后,就不在执行了,但由于某些特殊原因需再次重新执行某日的任务。或者有些方法可能一共只用一次就不需要了,这两种情况下就可以通过java写个的简单的脚本实现调用后端的接口了。
2.例子
某个定时任务执行失败,需手动再次拉起该日的定时任务重跑。
1、首先要确定服务的IP和端口,然后确认应用接口的请求方式(HTTP、Socket等),最后就是拼接报文了,代码如下
package AAA.BBB;//包名必须是包括该文件的目录名
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
public class test {
public static final String IP_ADDR = "172.0.0.1";//服务器地址
public static final int PORT = 8081;//服务器端口号
public static void main(String[] args) {
System.out.println("客户端启动...");
Socket socket = null;
try {
//创建一个流套接字并将其连接到指定主机上的指定端口号
socket = new Socket(IP_ADDR, PORT);
//服务端是通过socket接受报文,
//向服务器端发送数据
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("HHmmss");
String timeStr = sdf.format(date);
String str="0134{\"HEAD\":{\"bizType\":\"00\",\"instId\":\"00\",\"msgSrcId\":\"TPAD\",\"txnNo\":\"00000001\",\"txnTime\":\""+timeStr+"\",\"version\":\"0001\"},\"svr_date\":\""+args[0]+"\"}";
System.out.println(str);
out.write(str.getBytes("GBK"));
out.close();
} catch (Exception e) {
System.out.println("客户端异常:" + e.getMessage());
} finally {
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
socket = null;
System.out.println("客户端 finally 异常:" + e.getMessage());
}
}
}
}
}
2、接下来将上面的java类放入对应AAA/BBB的目录下
3、通过命令进入到java类所属的目录,然后编译该java,生成class文件(通过其他方式编译该java类也可以)
javac -encoding utf-8 test.java
具体操作方式见下
4、最后退到java类的根目录(即/root/test下)执行下面命令,这样就可以通过java脚本调用具体的服务了
java AAA.BBB.test 20190313
具体如下
5、补存
再执行最后的java AAA.BBB.test 20190313命令中 的20190313是test.java中main方法的参数String[] args的参数(即args[0]=20190312),若需要其他参数在20190313后空一格再写入该参数,同样输入第二个参数对应的为args[1 ] 可在执行main方法的args[1]取出该值