Discussion:
[basex-talk] BASEX: REST: PUT to change a XML file in DB
Roland Krause
2017-07-10 13:16:06 UTC
Permalink
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*
Christian Grün
2017-07-10 13:51:46 UTC
Permalink
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:***@localhost:8984/rest/XMLfiles/test.xml", true);

Cheers,
Christian


On Mon, Jul 10, 2017 at 3:16 PM, Roland Krause
Post by Roland Krause
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
Martin Honnen
2017-07-10 13:54:04 UTC
Permalink
Post by Roland Krause
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'));
Loading...