我有一个自定义的休息结束点(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请求发送此键/值对时
"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中的键/值..我对什么是错误感到困惑..但在查询控制台中我做同样的插入它具有相同的键/值..
我做错了什么.. ??
答案 0 :(得分:3)
我能够通过URLE编码UTF-8中的参数来解决我的问题,而在Marklogic的休息服务中,我做了解决我的问题的Dispose
......
我的Marklogic Rest服务调用java所以在调用之前我做xdmp:url-decode
并且在我的Marklogic服务端点中我通过调用URLEncoder.encode(str, "UTF-8")
来解码params