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

cha*_*nux 11 qt qnetworkaccessmanager

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

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

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

QHttpRequestHeader header;

header.setValue( "Authorization", QString( "Basic " ).append( auth.data() ) );
Run Code Online (Sandbox Code Playgroud)

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

Riu*_*ssi 37

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

// 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());
Run Code Online (Sandbox Code Playgroud)

  • 在使用基本身份验证的 REST 服务的情况下,这种方式将证明是有用的:验证器方法取决于为服务器执行额外的初始行程以请求身份验证,但以上述方式使用它,可以避免此行程。感谢您的回答。 (2认同)

Luk*_*ský 10

建议的方法是连接authenticationRequired信号并从那里设置凭据.