如何在qml XmlHttpRequest中设置用户名和密码

问题描述 投票:0回答:1

我想在QT-Creator中使用QML javascript XMLHttpRequest连接到服务器上的xml(例如nextcloud)。但是需要用户名和密码。下面是QML-Book的修改示例。但我不知道如何为不同的URL设置用户名和密码。

import QtQuick 2.5

Rectangle {
    width: 320
    height: 480
    ListView {
        id: view
        anchors.fill: parent
        delegate: Thumbnail {
            width: view.width
            text: modelData.title
            iconSource: modelData.media.m
        }
    }

    function request() {
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function() {
            if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) {
                print('HEADERS_RECEIVED')
            } else if(xhr.readyState === XMLHttpRequest.DONE) {
                print('DONE')
                var json = JSON.parse(xhr.responseText.toString())
                view.model = json.items
            }
        }
        xhr.open("GET", "http://mynextcoudserver/remote.php/dav/files/username/folder");
        xhr.send();
    }

    Component.onCompleted: {
        request()
    }
}

我找到了类似问题的答案:

xhr.setRequestHeader( 'Authorization', 'Basic ' + btoa( user + ':' + pass ) )

但它不起作用它给了我:“btoa”没有定义。

javascript qt qml ubuntu-touch
1个回答
0
投票

btoa是一个属于全局Qt对象的QML函数,因此您必须将代码更改为:

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = ...
xhr.setRequestHeader( 'Authorization', 'Basic ' + Qt.btoa( user + ':' + pass ) )
xhr.open("GET", "http://mynextcoudserver/remote.php/dav/files/username/folder");
xhr.send();
© www.soinside.com 2019 - 2024. All rights reserved.