QNetworkAccessManager和authenticationRequired

时间:2011-04-15 09:02:49

标签: c++ qt

使用QnetworkAccessManager帮助我使用协议FTP编写程序并使用登录密码进行身份验证。 我实现连接到服务器并获取目录列表,但我不希望如何实现身份验证。我读过文章http://doc.qt.nokia.com/qq/32/qq32-webkit-protocols.html

我在附加https://rapidshare.com/files/457472584/zip.zip的来源。

Qt 4.7 Windows XP Linux的

2 个答案:

答案 0 :(得分:7)

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

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

manager->get(QNetworkRequest(url));

答案 1 :(得分:5)

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

m_ftpManagerPtr = new QNetworkAccessManager(this);
Q_ASSERT(m_ftpManagerPtr);
connect ( m_ftpManagerPtr,
          SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
          this,        
          SLOT(onAuthenticationRequestSlot(QNetworkReply*,QAuthenticator*)) );

在插槽功能中,我只需填充用户名和密码字段/变量:

void QacFtpClient::onAuthenticationRequestSlot(QNetworkReply *aReply, 
                                               QAuthenticator *aAuthenticator)
{
    qDebug() << Q_FUNC_INFO;
    aAuthenticator->setUser(m_ftpUser);
    aAuthenticator->setPassword(m_ftpPasswd);
}

就是这样......它自动运行;)