使用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' –