在GeneXus Procedure(Web Service)中解码URL参数
在GeneXus Procedure中解码URL编码的Body参数
核心解决方案
GeneXus 提供了与 URLEncode() 对应的反向函数 URLDecode(),可以直接对URL编码的字符串进行解码,包括特殊字符、百分号编码和emoji这类Unicode字符都能正确处理。
步骤1:从输入字符串提取Body参数
先从完整的查询字符串里分离出Body对应的编码值:
// 假设完整输入字符串存在&InputQueryString变量中 &StartPos = Pos(&InputQueryString, 'Body=') + 5 // 定位Body参数值的起始位置 &EndPos = Pos(&InputQueryString, '&', &StartPos) // 定位Body参数值的结束位置(下一个&的位置) // 处理Body是最后一个参数的情况(没有后续&) If &EndPos = 0 &EndPos = Len(&InputQueryString) + 1 EndIf // 提取编码后的Body内容 &BodyEncoded = SubStr(&InputQueryString, &StartPos, &EndPos - &StartPos)
步骤2:解码Body参数
用URLDecode()函数把编码字符串转成明文:
&BodyDecoded = URLDecode(&BodyEncoded)
执行后,示例里的编码Body Este+es+un+texto+lago+que+incluye+%3A+%25+.+%F0%9F%99%82+%28emoji%29 会被解码为:Este es un texto lago que incluye : % . 🐂 (emoji)
注意事项
- 确认使用的GeneXus版本支持
URLDecode()(GeneXus X及后续版本均支持,旧版本可查阅对应官方文档) URLDecode()默认用UTF-8编码解析,能正确处理emoji等Unicode字符- 如果Web Service基于REST架构,也可以通过GeneXus的
HttpRequest对象直接获取已解析的参数,无需手动拆分查询字符串
内容的提问来源于stack exchange,提问作者Sergio Sepúlveda Montealegre
相关产品推荐
相关产品推荐

