使用Qt(QNetworkAccessManager)基本身份验证(Basic authentica

2019-07-20 16:28发布

我试图从我的Qt应用程序执行Twitter的基本身份验证。 我用QNetworkAccessManager。 但是,我找不到任何帮助。

但是,我发现了一个程序调用qsoapmanager其通过头通过用base64凭据。 也许我可以通过在QNetowrkRequest设置标头QNAM做到这一点。 但我没能找到一种方法。

在qsoapman源,首部设置这样的:

QHttpRequestHeader header;

header.setValue( "Authorization", QString( "Basic " ).append( auth.data() ) );

我可以做到这一点与QNAM / QNReq或是否有更好的办法?

Answer 1:

推荐的方法是连接到authenticationRequired信号,并从那里设置凭据。



Answer 2:

但是,如果你想只设置标头值做到这一点,这里是你如何能做到这一点:

// HTTP Basic authentication header value: base64(username:password)
QString concatenated = username + ":" + password;
QByteArray data = concatenated.toLocal8Bit().toBase64();
QString headerData = "Basic " + data;
request.setRawHeader("Authorization", headerData.toLocal8Bit());


Answer 3:

只是用qNetworkAccessManager正常,但添加

setRawHeader("Authorization", headerData.toLocal8Bit());

您的要求。

例:

//authentication

QString concatenated = "admin:admin"; //username:password

QByteArray data = concatenated.toLocal8Bit().toBase64();

QString headerData = "Basic " + data;

QNetworkRequest request=QNetworkRequest(QUrl("http://192.168.1.10/getinfo"));

request.setRawHeader("Authorization", headerData.toLocal8Bit());

networkAccessManager->get(request);

`



文章来源: Basic authentication with Qt (QNetworkAccessManager)