我想从我的GET请求中删除'授权:'标头。 QT默认添加它。
请求的样本 -
获取https://mywebsiteurl.com/remote.php/webdav/3.txt HTTP / 1.1
授权:基本Og ==
User-Agent:Mozilla / 5.0(Linux)myapp / 1.2.1
连接:Keep-Alive
Accept-Encoding:gzip,deflate
接受语言:en-US,*
示例代码 -
QNetworkAccessManager* mgr = new QNetworkAccessManager();
QNetworkRequest req;
req.setUrl(QUrl("sampleURL") );
mgr->get(req);
结果应如下(没有授权标题) -
获取https://mywebsiteurl.com/remote.php/webdav/3.txt HTTP / 1.1
User-Agent:Mozilla / 5.0(Linux)myapp / 1.2.1
连接:Keep-Alive
Accept-Encoding:gzip,deflate
接受语言:en-US,*
可以使用setHeader,setRawHeader等API,但无法完全删除标题。
答案 0 :(得分:0)
QT似乎通过信号/插槽系统自动处理身份验证,与标题分开,因此您不必考虑它。
您是否正在处理来自NetworkManager的authenticationRequired(QNetworkReply * reply,QAuthenticator * authenticator)信号。如果它在身份验证请求中给出了误报,您可以通过重置信号中的身份验证器来解决这个问题。对不起,这不是一个肯定的答案,但请告诉我它是否有效!
只要最终服务器请求身份验证,就会发出此信号 在它提供所请求的内容之前。插槽连接到此 信号应该填写内容的凭证(可以是 通过在验证器中检查答复对象来确定 对象
QNetworkAccessManager将在内部和将来缓存凭据 如果服务器再次需要身份验证,则发送相同的值, 不发出authenticationRequired()信号。如果它拒绝 凭证,这个信号将再次发出。
注意:无法使用QueuedConnection连接到此 信号,因为如果验证器还没有连接将失败 信号返回时填入新信息。
另请参阅proxyAuthenticationRequired()。