14

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

但是我发现了一个名为 qsoapmanager 的程序,它通过标头传递 base64 中的凭据。也许我可以通过在 QNetowrkRequest 中设置标头来使用 QNAM 做到这一点。但我没能找到方法。

在 qsoapman 源代码中,标头设置如下:

QHttpRequestHeader header;

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

我可以使用 QNAM/QNReq 做到这一点还是有更好的方法?

4

3 回答 3

43

但是,如果您只想通过设置标头值来做到这一点,那么您可以这样做:

// 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());
于 2009-11-09T12:40:47.423 回答
11

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

于 2009-10-03T07:41:04.543 回答
4

只是正常使用 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);

`

于 2017-02-14T08:34:29.897 回答