Https POST / GET with Qml / Qt

Recently, I have been working on Nokia mobile phones using Qt-Qml. I have to make a POST request to the given https URL. I use QML and I try to do it in Javascript with no luck.

Does anyone have an idea? Can this be done using Javascript in QML? Any advice on how to do this in QT?

I tried calling a function like this:

var http = new XMLHttpRequest() var url = "myform.xsl_submit"; 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 && http.status == 200) { print("ok"); }else{ print("cannot connect"); } } http.send(params); 
+6
source share
1 answer

Your if incorrect: the function is called several times, but only once http.readyState = 4 . This way you print error messages, although there are no errors yet.

You must first check to see 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-web server 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 
+4
source

Source: https://habr.com/ru/post/905530/


All Articles