我试图从我的Qt应用程序执行Twitter的基本身份验证。我使用QNetworkAccessManager。但我找不到任何帮助。
但我发现了一个名为qsoapmanager的程序,它通过标头传递base64中的凭据。也许我可以通过在QNetowrkRequest中设置标头来使用QNAM。但我找不到方法。
在qsoapman源代码中,标题设置如下:
QHttpRequestHeader header;
header.setValue( "Authorization", QString( "Basic " ).append( auth.data() ) );
我能用QNAM / QNReq做到这一点还是有更好的方法?
答案 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);
`