使用MarkLogic从网络服务中提取xdmp:http-get()
或xdmp:http-post()
的数据,我希望能够检查返回的标题,然后再尝试处理数据。在DQ我可以这样做:访问来自xdmp的HTTP响应:http-get()
let $result := xdmp:http-get($query,$options) (: $query and $options are fine, I promise. :)
return $result
而结果我回来是这样的:
<v:results v:warning="more than one node">
<response>
<code>200</code>
<message>OK</message>
<headers>
<server>(actual server data was here)</server>
<date>Thu, 07 Jun 2012 16:53:24 GMT</date>
<content-type>application/xml;charset=UTF-8</content-type>
<content-length>2296</content-length>
<connection>close</connection>
</headers>
</response>
之后的实际响应。问题是我似乎无法将XPath引入此响应节点。如果我将我的退货声明更改为return $result/response/code
,我会得到空序列。如果我可以检查该代码以确保在尝试处理返回的实际数据之前返回200,那么它将比使用try-catch块来查看数据是否存在并且是否理智更好。
因此,如果有人知道如何访问这些响应代码,我很乐意看到您的解决方案。
为了记录,我试过xdmp:get-response-code()
,但它不需要任何参数,所以我不知道它在查看什么响应代码。
在命名空间,我有时会欺骗(尤其是当有没有真正的性能问题与短暂的XML一样未存储在''数据库),而不是声明一个名称空间,只需使用一个名称空间通配符:'$ result/*:code' –