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

场景:检查服务器异常(hive)服务,就通过http发送一条短信到手机上,内容类似:【通知】${START_DATE}_hive服务检测异常${DB_ID},实现的ktr如下:


http的URL输入内容:http://XXXXXX?__ext=Stats&__tel=XXXX&__content=【通知】${START_DATE}_hive服务检测异常${DB_ID}


解决KETTLE调用http传输中文参数的问题_第1张图片

2016/09/08 15:43:05 - Spoon - 转换已经打开.
2016/09/08 15:43:05 - Spoon - 正在打开转换 [dxl_t]...
2016/09/08 15:43:05 - Spoon - 开始执行转换.
2016/09/08 15:43:05 - dxl_t - 为了转换解除补丁开始  [dxl_t]
2016/09/08 15:43:05 - 表输入.0 - Finished reading query, closing connection.
2016/09/08 15:43:05 - HTTP client.0 - ERROR (version 5.0.1-stable, build 1 from 2013-11-15_16-08-58 by buildguy) : 由于错误, 该步骤不能继续.
2016/09/08 15:43:05 - HTTP client.0 - 不能获取 URL http://XXXXXX?__ext=Stats&__tel=XXXX&__content=【通知】_hive服务检测异常&col1=1 的内容
2016/09/08 15:43:05 - HTTP client.0 - Invalid uri 'http://XXXXX?__ext=Stats&__tel=XXXXX&__content=【通知】_hive服务检测异常&col1=1': Invalid query
2016/09/08 15:43:05 - 表输入.0 - 完成处理 (I=1, O=0, R=0, W=1, U=0, E=0
2016/09/08 15:43:05 - HTTP client.0 - 完成处理 (I=0, O=0, R=1, W=0, U=0, E=1
2016/09/08 15:43:05 - dxl_t - ERROR (version 5.0.1-stable, build 1 from 2013-11-15_16-08-58 by buildguy) : 错误被检测到!
2016/09/08 15:43:05 - Spoon - 转换完成!!
2016/09/08 15:43:05 - dxl_t - ERROR (version 5.0.1-stable, build 1 from 2013-11-15_16-08-58 by buildguy) : 错误被检测到!
2016/09/08 15:43:06 - dxl_t - ERROR (version 5.0.1-stable, build 1 from 2013-11-15_16-08-58 by buildguy) : 错误被检测到!
2016/09/08 15:43:06 - dxl_t - dxl_t
2016/09/08 15:43:06 - dxl_t - dxl_t


处理过程:转变编码格式成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

附上调试出错的

2016/09/08 15:46:05 - Spoon - 转换已经打开.
2016/09/08 15:46:05 - Spoon - 正在打开转换 [dxl_t]...
2016/09/08 15:46:05 - Spoon - 开始执行转换.
2016/09/08 15:46:05 - dxl_t - 为了转换解除补丁开始  [dxl_t]
2016/09/08 15:46:05 - 表输入.0 - Finished reading query, closing connection.
2016/09/08 15:46:05 - HTTP client.0 - ERROR (version 5.0.1-stable, build 1 from 2013-11-15_16-08-58 by buildguy) : 由于错误, 该步骤不能继续.
2016/09/08 15:46:05 - HTTP client.0 - 不能获取 URL http://XXXX?__ext=Stats&__tel=XXXXXXX&__content=【通知】_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 的内容
2016/09/08 15:46:05 - HTTP client.0 - Invalid uri 'http://XXXXX?__ext=Stats&__tel=XXXXXXX&__content=【通知】_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': Invalid query
2016/09/08 15:46:05 - 表输入.0 - 完成处理 (I=1, O=0, R=0, W=1, U=0, E=0
2016/09/08 15:46:05 - HTTP client.0 - 完成处理 (I=0, O=0, R=1, W=0, U=0, E=1
2016/09/08 15:46:05 - dxl_t - ERROR (version 5.0.1-stable, build 1 from 2013-11-15_16-08-58 by buildguy) : 错误被检测到!
2016/09/08 15:46:05 - Spoon - 转换完成!!
2016/09/08 15:46:05 - dxl_t - ERROR (version 5.0.1-stable, build 1 from 2013-11-15_16-08-58 by buildguy) : 错误被检测到!
2016/09/08 15:46:05 - dxl_t - ERROR (version 5.0.1-stable, build 1 from 2013-11-15_16-08-58 by buildguy) : 错误被检测到!
2016/09/08 15:46:05 - dxl_t - dxl_t
2016/09/08 15:46:05 - dxl_t - dxl_t


你可能感兴趣的:(Hive,Kettle)