KETTLE调用http传输中文参数的问题

场景:检查服务器异常(hive)服务,就通过http发送一条短信到手机上,内容类似:【通知】 S T A R T D A T E h i v e 服务检测异常 {START_DATE}_hive服务检测异常 STARTDATEhive服务检测异常{DB_ID},实现的ktr如下:在这里插入图片描述
http的URL输入内容:http://XXXXXX?__ext=Stats&__tel=XXXX&__content=【通知】 S T A R T D A T E h i v e 服务检测异常 {START_DATE}_hive服务检测异常 STARTDATEhive服务检测异常{DB_ID}在这里插入图片描述
在这里插入图片描述
处理过程:转变编码格式成GBK或者别的,都是出错;

把中文去掉,只留英文提示,就可以发送成功,说明是中文转码的问题

解决中文转码的问题:在"表输入"控件里面输入中文,传输到col1变量里面,出错时,会看到中文需要转码的格式,如下col1=【通知】_hive服务检测异常,这句会被转换成col1=%E3%80%90%E9%80%9A%E7%9F%A5%E3%80%91_hive%E6%9C%8D%E5%8A%A1%E6%A3%80%E6%B5%8B%E5%BC%82%E5%B8%B8;

可见http需要接收转码好的URL编码方式,ktr的http控件,就需要改成“http://XXXX?__ext=Stats&__tel=XXXXXXX&__content=%E3%80%90%E9%80%9A%E7%9F%A5%E3%80%91_hive%E6%9C%8D%E5%8A%A1%E6%A3%80%E6%B5%8B%E5%BC%82%E5%B8%B8”

相关URL编码方式转码,查看:http://tool.chinaz.com/tools/urlencode.aspx

附上调试出错的在这里插入图片描述

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java调用Kettle的CallShell参数主要用于执行Shell脚本或命令,并将脚本的输出结果返回到Java程序中。通过CallShell参数可以实现与外部Shell命令的交互和数据传递。 在Java中调用Kettle的CallShell参数,首先需要创建一个Job对象,并通过JobEntrySpecial类型的对象设置CallShell参数。代码示例如下: ```java Job job = new Job(null, null); JobEntrySpecial callShell = new JobEntrySpecial(); callShell.setName("Call Shell"); callShell.setSpecification("shell_script.sh"); // 设置Shell脚本的路径或命令 job.setEntry(callShell); job.start(); // 执行Job // 获取Shell脚本的输出结果 String output = callShell.getOutput().toString(); System.out.println(output); ``` 在以上代码中,我们创建了一个Job对象,并通过JobEntrySpecial来设置CallShell参数。其中,setName()方法设置任务的名称,setSpecification()方法设置Shell脚本的路径或命令。 执行Job后,可以通过getOutput()方法获取到Shell脚本的输出结果,并将结果打印出来。 需要注意的是,在执行Shell脚本之前,我们需要在Kettle中配置好Shell脚本的路径或命令,并且保证该脚本具有可执行权限。 总结起来,通过Java调用Kettle的CallShell参数可以方便地执行Shell脚本或命令,并将其输出结果返回到Java程序中。这样可以在KettleETL过程中与外部Shell命令进行交互,实现更加灵活和强大的数据处理功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值