2011-04-15 15 views
1

QnetworkAccessManagerを使用して、プロトコルFTPでのプログラム作業とログインパスワードによる認証を作成するのに役立ちます。 私はconnect to serverを実装してディレクトリのリストを取得しますが、認証の実装方法は疑いません。私は記事http://doc.qt.nokia.com/qq/32/qq32-webkit-protocols.htmlを読む。QNetworkAccessManagerとauthenticationRequired

私のソースはアタッチhttps://rapidshare.com/files/457472584/zip.zipです。

はQt 4.7 のWindows XP Linuxの

+0

なぜドンあなたはQFtpクラスを使用していませんか? – RedX

+0

Qftp(FtpReplyクラスを参照)を使用します。しかし、私はQNetworkAccessManagerでこれをやりたい私の経験のためにそれはnoun;)。それは不可能だ?いくつかの回避策を使用できますか? – user709500

答えて

5

私は似た何かをして、非常に同じ問題を解決する必要がありますよ:
私は何をすることです:
- QNetworkAccessManagerオブジェクトを作成し、接続信号は、私は単に私たちを埋めるスロット関数の内部

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

をauthenticationRequired ER名とパスワードのフィールド/変数:

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

そして、それはそれだ...それは自動的に動作します。)

+0

ありがとう、これは非常に便利です! –

6

QUrlは、使用可能なユーザ/パスワードフィールドがあります。

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

manager->get(QNetworkRequest(url)); 
+0

私はこれがQAuthenticatorメソッドよりも優れていると思って、あなたに許可するように言われるだけの不必要な第1ラウンドトリップを避けましたが、ソースを見れば、要求を失敗して承認を追加するのを待っているようです。 – boycy

関連する問題