Marklogic URL encoding



MarkLogic版本-9.0-6.2

我有一个自定义REST端点,它接受电话号码作为参数。我的要求是从URL中读取这个输入的电话号码,与数据库中的电话号码进行比较,然后返回Match/NoMatch。

当我通过电话号码值为+1-800-723-1800的SoapUI工具调用URL时,我看到SoapUI工具正在以&PhoneNo=%2B1-800-723-1800。当我比较(在javascript中使用===(这个值和数据库中的值时,我得到了预期的结果。

然而,当通过IIB(IBM Integration Bus(进行相同的调用时,我在MarkLogic日志中看到GET请求是作为&电话号码=+1-800-723-1800(+未编码(。现在这个比较结果是NoMatch,尽管我在数据库中有完全相同的值。

这是编码问题吗?如何在MarkLogic中处理编码?

Q:通过"这个值"one_answers"数据库中完全相同的值",这个值到底是什么?

A: 无论哪个工具(在本例中为IIB(正在执行HTTP请求而没有对+进行编码,都可能是不正确的,或者它认为该工具的调用方负责URL编码。由于URL编码正确地要求URL的每个组件都单独编码(而不是整个URL本身(,通常接受完整URL的库会期望它们已经编码——因为它们无法正确地编码完整URL本身。

Q: 什么代码为IIB提供了要使用的URL?很可能该代码是负责正确编码URL的代码(其中+应进行百分比编码,否则将被解码为空格(

最新更新