Recently I\'m working on Nokia mobiles using Qt-Qml. I have to make a POST request to a given HTTPS Url. I\'m using QML and I\'m trying to do it in Javascript without any l
Your if
statement is wrong: The function is called several times, but only one time http.readyState = 4
. So, you print error messages although there's no errors yet.
You should first check if http.readyState = 4
, and then look at the status code.
Here is a minimal working example:
import QtQuick 1.1
Rectangle {
Component.onCompleted: {
var http = new XMLHttpRequest()
var url = "http://localhost:8080";
var params = "num=22&num2=333";
http.open("POST", url, true);
// Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() { // Call a function when the state changes.
if (http.readyState == 4) {
if (http.status == 200) {
console.log("ok")
} else {
console.log("error: " + http.status)
}
}
}
http.send(params);
}
}
I created a local pseudo-webserver with netcat to test it:
% echo -e 'HTTP/1.1 200 OK\n\n' | nc -l 8080
POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Content-Length: 15
Connection: Keep-Alive
Accept-Encoding: gzip
Accept-Language: de-DE,en,*
User-Agent: Mozilla/5.0
Host: localhost:8080
num=22&num2=333