MarkLogic을 사용하여 웹 서비스의 데이터를 xdmp:http-get()
또는 xdmp:http-post()
으로 가져 오려면, 처리하기 전에 돌아 오는 헤더를 검사 할 수 있어야합니다. 데이터.xdmp에서 HTTP 응답에 액세스하십시오. http-get()
let $result := xdmp:http-get($query,$options) (: $query and $options are fine, I promise. :)
return $result
을 그리고 내가 돌아올 결과는 다음과 같습니다 : DQ에서 나는이 작업을 수행 할 수 있습니다
<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()
을 시도했지만 매개 변수를 사용하지 않으므로 응답 코드가 무엇인지 알 수 없습니다.
, 가끔 (속임수를 데이터베이스) 네임 스페이스를 선언하는 대신 네임 스페이스 와일드 카드를 사용하면됩니다 :'$ result/* : code' –