BASEX: REST: PUT to change a XML file in DB
Hi all, I installed basex for keeping and updating XML files. I can load a XML into a browser with javascript ... var xhr = new XMLHttpRequest(); xhr.open( "GET", "http://localhost:8984/rest/XMLfiles/cmuInput.xml", true); xhr.send(); var xml = xhr.responseXML; ... but if I try to PUT something, it will not work. ... var xhr = new XMLHttpRequest(); xhr.open( "PUT", "http://localhost:8984/rest/XMLfiles/test.xml", true); xhr.setRequestHeader("Authorization", "Basic " + btoa("admin:admin")); xhr.send("<ALLES>hat ein Ende, nur die Wurst hat zwei</ALLES>"); ... *[HTTP/1.1 400 Bad Request 6ms]* BUT it works with *curl* echo "<ALLES>hat ein Ende, nur die Wurst hat zwei</ALLES>" | *curl* -u admin:admin -i -X PUT -T - "http:// localhost :8984/rest/XMLfiles/ test .xml" HTTP/1.1 201 Created Content-Type: text/plain;charset=UTF-8 Content-Length: 36 Server: Jetty(8.1.18.v20150929) 1 resource(s) replaced in 32.91 ms. I need help here! -- Kind regards, *Roland*
Dear Roland, This sounds like a JavaScript issue, so I can’t help too much, but maybe thing work out if you specify login and passwort directly in the URL? xhr.open( "PUT", "http://admin:admin@localhost:8984/rest/XMLfiles/test.xml", true); Cheers, Christian On Mon, Jul 10, 2017 at 3:16 PM, Roland Krause <roland.krause@globalfoundries.com> wrote:
Hi all,
I installed basex for keeping and updating XML files.
I can load a XML into a browser with javascript ... var xhr = new XMLHttpRequest(); xhr.open( "GET", "http://localhost:8984/rest/XMLfiles/cmuInput.xml", true); xhr.send(); var xml = xhr.responseXML; ...
but if I try to PUT something, it will not work. ... var xhr = new XMLHttpRequest(); xhr.open( "PUT", "http://localhost:8984/rest/XMLfiles/test.xml", true); xhr.setRequestHeader("Authorization", "Basic " + btoa("admin:admin")); xhr.send("<ALLES>hat ein Ende, nur die Wurst hat zwei</ALLES>"); ...
[HTTP/1.1 400 Bad Request 6ms]
BUT it works with curl
echo "<ALLES>hat ein Ende, nur die Wurst hat zwei</ALLES>" | curl -u admin:admin -i -X PUT -T - "http:// localhost :8984/rest/XMLfiles/ test .xml"
HTTP/1.1 201 Created Content-Type: text/plain;charset=UTF-8 Content-Length: 36 Server: Jetty(8.1.18.v20150929) 1 resource(s) replaced in 32.91 ms.
I need help here!
-- Kind regards, Roland
On 10.07.2017 15:16, Roland Krause wrote:
Hi all,
I installed basex for keeping and updating XML files.
I can load a XML into a browser with javascript ... var xhr = new XMLHttpRequest(); xhr.open( "GET", "http://localhost:8984/rest/XMLfiles/cmuInput.xml", true); xhr.send(); var xml = xhr.responseXML; ...
but if I try to PUT something, it will not work. ... var xhr = new XMLHttpRequest(); xhr.open( "PUT", "http://localhost:8984/rest/XMLfiles/test.xml", true); xhr.setRequestHeader("Authorization", "Basic " + btoa("admin:admin")); xhr.send("<ALLES>hat ein Ende, nur die Wurst hat zwei</ALLES>"); ...
*[HTTP/1.1 400 Bad Request 6ms]*
I have never tried a PUT with client-side Javascript but as far as I remember from POST requests if you want to send XML you should pass a DOM document to the send method e.g. in your case you can parse the string into a document using DOMParser xhr.send(new DOMParser().parseFromString('<test/>', 'application/xml'));
participants (3)
-
Christian Grün -
Martin Honnen -
Roland Krause