我试图从我的Qt应用程序执行Twitter的基本身份验证。 我用QNetworkAccessManager。 但是,我找不到任何帮助。
但是,我发现了一个程序调用qsoapmanager其通过头通过用base64凭据。 也许我可以通过在QNetowrkRequest设置标头QNAM做到这一点。 但我没能找到一种方法。
在qsoapman源,首部设置这样的:
QHttpRequestHeader header;
header.setValue( "Authorization", QString( "Basic " ).append( auth.data() ) );
我可以做到这一点与QNAM / QNReq或是否有更好的办法?
推荐的方法是连接到authenticationRequired
信号,并从那里设置凭据。
但是,如果你想只设置标头值做到这一点,这里是你如何能做到这一点:
// 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());
只是用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);
`