WSO2 ESB URL编码如何将空格的%20替换为+符号实现咨询
WSO2 ESB GET请求查询参数空格编码替换为+的可行方案
WSO2 ESB默认URI编码规则会将空格转换为%20,要适配第三方服务要求的+编码格式,可通过以下步骤实现:
- 首先修改http端点配置,新增
escape-disabled="true"属性,关闭系统对URI模板参数的自动编码能力,修改后配置如下:
<http uri-template="http://********:8080/invokehttp/httpublish?PUSH_TYPE={uri.var.pushtype}&SERVICE_CODE={uri.var.servicecode}&MSISDN={uri.var.msisdn}&PUSH_TEXT={uri.var.pushtext}&USER_ID={uri.var.username}&PASSWORD={uri.var.password}" format="rest" escape-disabled="true">
- 然后在调用上述端点之前,添加脚本中介器手动处理含空格的查询参数:先做通用URL编码,再将编码结果中的
%20批量替换为+,示例脚本如下:
<script language="js"> <![CDATA[ // 从消息上下文获取原始推送文本参数 var rawPushText = mc.getProperty("uri.var.pushtext"); // 编码后替换空格对应的编码格式 var handledPushText = encodeURIComponent(rawPushText).replace(/%20/g, "+"); // 替换回消息上下文供后续调用使用 mc.setProperty("uri.var.pushtext", handledPushText); ]]> </script>
如果有其他参数也需要适配相同编码规则,参照上述逻辑批量处理即可。配置完成后发起测试请求,即可看到查询参数中的空格已按要求编码为+。
内容的提问来源于stack exchange,提问作者user3595078
相关产品推荐
相关产品推荐

