使用 Rest 时出现 Marklogic SVC-BAD 代码点错误 API
Marklogic SVC-BAD Codepoint error when using Rest API
我有一个自定义的休息端点 (POST) 并传递一些键值对,在我的端点中我使用这些键值对并创建一个 xml 文档。这是代码
let $enevelope := <document-enevelope>
<metadata>
{
let $extraProperties := xdmp:get-request-field-names()
for $x at $i in $extraProperties
let $val := xdmp:get-request-field($x)
return
if(repoLoad:isEmpty($val)) then ()
else
element {fn:normalize-space($x)} {$val}}
}
</metadata>
</document-enevelope>
let $_ := xdmp:document-insert($docEnevelopeURI, $enevelope,(xdmp:default-permissions()), ())
所有这一切都有效,但是当我发送到我的 POST 请求这个 key/value 对
"Experiment_name":"X13-284-285-A-1516147.0-V1ß iv.po.ip.b.CSF.rat."
我收到以下错误Error: AppRequestTask::run: SVC-BAD: Bad CodepointIterator::_next
我发送的请求甚至没有到达我的自定义休息端点。我确实用 UTF-8 对 key/value 进行了编码。我对出了什么问题感到困惑。但是在查询控制台中我使用相同的 key/value 执行相同的插入操作..
我做错了什么.. ??
我能够通过对 UTF-8 中的参数进行 URLEncoding 来解决我的问题,而在我使用 Marklogic 的其余服务中,我做了 xdmp:url-decode
解决了我的问题...
我的 Marklogic Rest 服务调用 java 所以在调用之前我做了 URLEncoder.encode(str, "UTF-8")
并且在我的 Marklogic 服务端点中我通过调用 xdmp:url-decode
解码参数
我有一个自定义的休息端点 (POST) 并传递一些键值对,在我的端点中我使用这些键值对并创建一个 xml 文档。这是代码
let $enevelope := <document-enevelope>
<metadata>
{
let $extraProperties := xdmp:get-request-field-names()
for $x at $i in $extraProperties
let $val := xdmp:get-request-field($x)
return
if(repoLoad:isEmpty($val)) then ()
else
element {fn:normalize-space($x)} {$val}}
}
</metadata>
</document-enevelope>
let $_ := xdmp:document-insert($docEnevelopeURI, $enevelope,(xdmp:default-permissions()), ())
所有这一切都有效,但是当我发送到我的 POST 请求这个 key/value 对
"Experiment_name":"X13-284-285-A-1516147.0-V1ß iv.po.ip.b.CSF.rat."
我收到以下错误Error: AppRequestTask::run: SVC-BAD: Bad CodepointIterator::_next
我发送的请求甚至没有到达我的自定义休息端点。我确实用 UTF-8 对 key/value 进行了编码。我对出了什么问题感到困惑。但是在查询控制台中我使用相同的 key/value 执行相同的插入操作..
我做错了什么.. ??
我能够通过对 UTF-8 中的参数进行 URLEncoding 来解决我的问题,而在我使用 Marklogic 的其余服务中,我做了 xdmp:url-decode
解决了我的问题...
我的 Marklogic Rest 服务调用 java 所以在调用之前我做了 URLEncoder.encode(str, "UTF-8")
并且在我的 Marklogic 服务端点中我通过调用 xdmp:url-decode