MarkLogic版本- 9.0-6.2
我有一个自定义的REST端点,它接受电话号码作为参数。我的要求是从URL读取这个输入的电话号码,与数据库中的电话号码进行比较,然后返回Match/NoMatch。
当我通过电话号码为+1-800-723-1800的SoapUI工具调用URL时,我看到soapUI工具正在向MarkLogic as &PhoneNo=%2B1-800-723-1800发送GET请求。当我将这个值与数据库中的值进行比较(在javascript中使用=== )时,我将得到预期的结果。
但是,当通过IIB ( Integration )进行相同的调用时,我在MarkLogic日志中看到GET请求是以&PhoneNo=+1-800-723-1800 (+ not编码)的形式发出的。现在,即使数据库中有相同的值,这个比较结果也是以NoMatch的形式出现的。
这是编码的问题吗?如何处理MarkLogic中的编码?
发布于 2018-12-11 03:54:04
问:通过“这个值”和“数据库中完全相同的值”,这个值到底是什么?
答:不管是什么工具(在本例中是IIB)正在执行HTTP请求,而不对+进行编码,要么是不正确的,要么是预期该工具的调用方负责URL编码。由于URL编码正确地要求URL的每个组件被单独编码(而不是整个URL本身),通常接受完整URL的库将期望它们已经被编码--因为它们不能正确地编码完整URL本身。
问:给IIB提供的URL是什么代码?代码很可能是负责正确编码URL的代码(其中+应该被编码百分比,否则它将被解码为一个空格)
https://stackoverflow.com/questions/53716850
复制相似问题