Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 需要QNetworkAccessManager和身份验证_C++_Qt - Fatal编程技术网

C++ 需要QNetworkAccessManager和身份验证

C++ 需要QNetworkAccessManager和身份验证,c++,qt,C++,Qt,帮助我编写使用协议FTP和使用QnetworkAccessManager通过登录密码进行身份验证的程序。 我实现了连接到服务器并获取目录列表,但我不知道如何实现身份验证。我读了这篇文章 附上我的消息来源 Qt 4.7 视窗Xp Linux我正在做类似的事情,需要解决同样的问题: 我所做的是: -创建QNetworkAccessManager对象,并连接信号authenticationRequired m_ftpManagerPtr = new QNetworkAccessManager(this

帮助我编写使用协议FTP和使用QnetworkAccessManager通过登录密码进行身份验证的程序。 我实现了连接到服务器并获取目录列表,但我不知道如何实现身份验证。我读了这篇文章

附上我的消息来源

Qt 4.7 视窗Xp
Linux

我正在做类似的事情,需要解决同样的问题:
我所做的是:
-创建QNetworkAccessManager对象,并连接信号authenticationRequired

m_ftpManagerPtr = new QNetworkAccessManager(this);
Q_ASSERT(m_ftpManagerPtr);
connect ( m_ftpManagerPtr,
          SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
          this,        
          SLOT(onAuthenticationRequestSlot(QNetworkReply*,QAuthenticator*)) );
在slot函数中,我只需填充用户名和密码字段/变量:

void QacFtpClient::onAuthenticationRequestSlot(QNetworkReply *aReply, 
                                               QAuthenticator *aAuthenticator)
{
    qDebug() << Q_FUNC_INFO;
    aAuthenticator->setUser(m_ftpUser);
    aAuthenticator->setPassword(m_ftpPasswd);
}
void QacFtpClient::onAuthenticationRequestSlot(QNetworkReply*aReply,
QAuthenticator*A验证人)
{
qDebug()setUser(m_ftpUser);
a验证人->设置密码(m_ftpPasswd);
}

就这样。。。它自动工作;)

QUrl有一个用户/密码字段,您可以使用:

QNetworkAccessManager* manager = new QNetworkAccessManager(this);
QUrl url("host");
url.setUserName("user");
url.setPassword("password");

manager->get(QNetworkRequest(url));

为什么不使用QFtp类呢?我使用QFtp(参见FtpReply类)。但我想用QNetworkAccessManager来实现这一点。这需要我的经验。不可能吗?可能需要一些解决方法吗?谢谢,这非常有用!我认为这将比QAuthenticator方法更好,并避免不必要的第一次往返,只是为了被告知授权,但从源代码看,它似乎仍然在等待请求失败后再添加授权:(