上篇文章写道,在项目中采用触发器+存储过程实现了http接口的访问。本文补充一点儿参数传递的内容
1. 参数格式
当我们定义消息类型为 'application/x-www-form-urlencoded' 时,对应的参数结构为:key1=value1&key2=para2
--当我们定义消息类型为 'application/x-www-form-urlencoded' 时,对应的参数结构为:
-- key1=value1&key2=para2
UTL_HTTP.SET_HEADER (r => req,name => 'Content-Type', value => 'application/x-www-form-urlencoded');
2.中文内容处理
当数据内容只包含英文和数字时请求时正常的。当数据内容包含中文、空格及其他特殊字符时,请求将会失败。此时需要通过函数 utl_url.escape() 对数据内容进行转码。
由于我设计的接口的参数是一个 类型,因此我没有对整个 参数体进行 转码,而是仅对每个参数值进行转码。
para1 VARCHAR2(4000):=utl_url.escape('张三',true, 'UTF8');
para2 VARCHAR2(4000):=utl_url.escape('李四',true, 'UTF8');
--不要使用 utl_url.escape('张三');不设置编码格式的话可能会无法解码
v_param VARCHAR2(4000) :='key1='||para1 ||'&key2='||para2;