Https POST / GET with Qml/Qt

后端 未结 1 1587
北恋
北恋 2021-01-05 01:05

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

相关标签:
1条回答
  • 2021-01-05 01:24

    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
    
    0 讨论(0)
提交回复
热议问题