使用Rest API时Marklogic SVC-BAD Codepoint错误

时间:2016-06-09 17:48:30

标签: marklogic marklogic-8

我有一个自定义的休息结束点(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中的键/值..我对什么是错误感到困惑..但在查询控制台中我做同样的插入它具有相同的键/值..

我做错了什么.. ??

1 个答案:

答案 0 :(得分:3)

我能够通过URLE编码UTF-8中的参数来解决我的问题,而在Marklogic的休息服务中,我做了解决我的问题的Dispose ......

我的Marklogic Rest服务调用java所以在调用之前我做xdmp:url-decode并且在我的Marklogic服务端点中我通过调用URLEncoder.encode(str, "UTF-8")来解码params