使用Qt进行基本身份验证(QNetworkAccessManager)

时间:2009-10-03 05:02:41

标签: qt qnetworkaccessmanager

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

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

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

QHttpRequestHeader header;

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

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

3 个答案:

答案 0 :(得分:35)

但是如果你想通过设置标题值来实现它,那么你可以这样做:

// 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());

答案 1 :(得分:10)

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

答案 2 :(得分:1)

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

`