xdmp:http-post( $uri as xs:string, [$options as (element()|map:map)?], [$data as node()?] ) as item()+
Sends an http POST request to the server.
Parameters | |
---|---|
uri | The URI to which the data is to be posted. |
options |
Options with which to customize this operation.
You can specify options as either an XML element
in the "xdmp:http" namespace, or as a map:map . The
options names below are XML element localnames. When using a map,
replace the hyphens with camel casing. For example, "an-option"
becomes "anOption" when used as a map:map key.
This function supports the following options, plus the options from the
xdmp:http-get
function.
|
data |
The data for this request. This is an alternative to the
data option for the second parameter that allows binary
content to be specified for the body of the POST.
|
http://marklogic.com/xdmp/privileges/xdmp-http-post
The http functions only operate on URIs that use the http or https
schemes; specifying a URI that does not begin with http://
or https://
throws an exception.
If an http function times out, it throws a socket received exception (SVC-SOCRECV).
The function returns a sequence containing the request response. If the reponse is multi-part, then the sequence contains multiple items.
If you expect the request body from this http function to be processed by another application (via a web service, for example), you should specify a content-type header. If no content-type header is specified, the content type defaults to text/plain.
xdmp:http-post("http://www.my.com/document.xhtml",
<options xmlns="xdmp:http">
<authentication method="basic">
<username>myname</username>
<password>mypassword</password>
</authentication>
</options>)
=> the response from the server as well as the specified document
(: Use xdmp:quote to encode the XML as a string
because the <data> options element is a string :)
let $payload := xdmp:quote(
<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:my='urn:MyConnection'>
<SOAP-ENV:Body>
<my:LogOn>
<my:User>user</my:User>
<my:Password>pass</my:Password>
<my:Ticket>abc123</my:Ticket>
<my:newData>1234</my:newData>
</my:LogOn>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
)
return
xdmp:http-post("http://www.my.com/document.xhtml",
<options xmlns="xdmp:http">
<authentication method="basic">
<username>myname</username>
<password>mypassword</password>
</authentication>
<data>{$payload}</data>
<headers>
<content-type>application/xml</content-type>
</headers>
</options>)
=> the response from the server as well as the specified document
xquery version "1.0-ml";
let $payload :=
'{ "user-name": "joe",
"password": "cool"
,"role": [ "rest-reader" , "rest-writer" ]
}'
return
xdmp:http-post("http://localhost:8002/manage/v2/users?format=json",
<options xmlns="xdmp:http">
<authentication method="digest">
<username>myname</username>
<password>mypassword</password>
</authentication>
<headers>
<content-type>application/json</content-type>
</headers>
<data>{$payload}</data>
</options>)
=> the response from the server, and in this example, the new user (joe) is
created
Stack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.