kettle从入门到精通 第七十二课 ETL之kettle 三谈http post(含文件上传),彻底掌握参数传递

场景:群里有个小伙伴在使用http post步骤调用接口时遇到问题,postman调用正常,但是kettle中调用异常。

 解决方案:既然postman调用接口正常,肯定是http post步骤中某些参数设置的不正确导致的。那就把常用的方式都梳理下,搞定它。

 1、http post请求参数放到body中,Content-Type是application/json。

 1)body参数配置

 2)http head中的Content-type配置为application/json。

 3)接口方参数调试

 2、http post请求参数放到form中,类似于html中的表单提交,Content-Type是application/x-www-form-urlencoded。

1)http head中的Content-type配置为application/x-www-form-urlencoded。

 2)body(header) parameters设置。

 3)接口方参数调试

3、http post请求参数放到url中,这种方式不常见一般是get请求参数放到url中,Content-Type不限。

1)只需要将参数放到url后面即可

 2)接口方参数调试

3、http post 请求参数放到query parameters中,通过kettle源码查看得知这部分参数依然放到body中,而不是放到url后面。

1)源码一窥究竟

如果服务的是java服务,则可以通过request.getParameter("parameterName")这种方式获取url和form表单中的参数。

如果服务是python服务,则需要通过request.form来获取query parameters中的参数了。

 2)query parameters参数设置,Content-Type是application/x-www-form-urlencoded

 3)接口方参数调试,经过调试发现无论python或者是java接收参数,都会出现中文乱码,大神们可以评论区告诉我

4、http post请求参数为文件,相当于文件上传,Content-Type是multipart/form-data

 1)参数设置,这里需要选中Post a file选项。

2)设置Content-type为multipart/form-data或者application/octet-stream。

 3)接口方参数调试,经过调试发现python后端需要通过request.data 接收文件,通过request.files 接收不到。

4) 查看kettle 源码得知:Java 客户端发送文件时,使用的是直接将文件内容作为请求体的形式,而不是通过标准的文件上传方式,所以request.files 接收不到。

5)标准文件上传代码如下,这种方式可以通过request.files获取文件。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值