Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ QNetworkAccessManager :: авторизация

Автор: grio 6.4.2010, 18:01

Салют, парни!

Потелял несколько дней на QFtp и его перманентную ошибку "Downloading file failed:SIZE not allowed in ASCII mode"
А сегодняшний день слил переписывая код под QNetworkAccessManager.

Проблема такая: логин содержит символ @, который трактуется, как разделитель при работе с QNetworkAccessManager.
В QFtp такой проблемы небыло, но он жестко глючит. И, как я понял, их вместе с QHttp сняли с производства. )

Пробовал заменить '@' на '%40' - результат выполнения авторизации другой, но тоже отрицательный.

Что делать, если логин не меняется?

br,
grio.

Автор: kwisp 6.4.2010, 21:21

grio,
уверен что это именно QNetworkAccessManager виноват.
может ты сам запрос неверно составляешь.
возьми снифером проверь как с этой проблемой справляется QFtp.
и отправь такой же запрос авторизации.

покажи код.

Автор: DIMEDROLL 6.4.2010, 22:00

Цитата(grio @ 6.4.2010, 18:01) *
Салют, парни!

Потелял несколько дней на QFtp и его перманентную ошибку "Downloading file failed:SIZE not allowed in ASCII mode"

Работал с QFtp и никаких таких проблем не возникало. В семлах есть пример - скачивалка файлов, посмотри, авось поможет.
Авось этот глюк сервера?!

Автор: grio 7.4.2010, 4:13

Цитата(kwisp @ 6.4.2010, 22:21) *
grio,
уверен что это именно QNetworkAccessManager виноват.
может ты сам запрос неверно составляешь.
возьми снифером проверь как с этой проблемой справляется QFtp.
и отправь такой же запрос авторизации.

покажи код.


QFtp работает с сервером отдельными командами. Сначала авторизуется, потом заходит в директорию, а только потом запрашивает файл.
QNetworkAccessManager пытается все сделать в одном запросе. Сперва фомирует строку ftp://login%3a%70ass@server/file из составляющих QUrl, а потом делает запрос. В этом как раз и проблема.

Цитата
Работал с QFtp и никаких таких проблем не возникало. В семлах есть пример - скачивалка файлов, посмотри, авось поможет.
Авось этот глюк сервера?!

Возможно у сервера тоже есть какая то проблема однако, через FTP-клиент Тотал Коммандера я с ним прекрасно работаю. Если хочешь увидеть глюк QFtp, попробуй создать на ftp пользователя с e-mail в качестве логина и запросить любой существующий файл (иногда срабатывает, но чаще выдает ошибку) К сожалению, в семплах нет ни одного примера с авторизацией.
connect(ftp, SIGNAL(done(bool)), this, SLOT(done(bool)));
    ftp->connectToHost("ftp.some.ru");
    ftp->login("anonymous@some.ru");
    ftp->get("file",
             &file,
             QFtp::Binary);

Автор: Litkevich Yuriy 7.4.2010, 4:56

Цитата(grio @ 7.4.2010, 8:13) *
создать на ftp пользователя с e-mail в качестве логина
в тотале в качестве пароля предлагается электропочта, но не в качестве имени. Может всё таки не правильно использовать электропочту в имени пользователя?

Автор: grio 7.4.2010, 5:50

Цитата(Litkevich Yuriy @ 7.4.2010, 5:56) *
Цитата(grio @ 7.4.2010, 8:13) *
создать на ftp пользователя с e-mail в качестве логина
в тотале в качестве пароля предлагается электропочта, но не в качестве имени. Может всё таки не правильно использовать электропочту в имени пользователя?

Правильно или нет, но вот такой у меня хостинг провайдер...
Сейчас поставил Сербера на локальную машину - проблем с QFtp не наблюдаю.
Значит да, дело в удаленном сервере. И нашелhttp://qt-apps.org/content/show.php/Scythia?content=61326:
Исходники довольно хитрые, да и комменты на французском, что скорее мешает, чем помогает.
Но этот фтп-клиент качает с моего хостинга. Правда вместо %% загрузки показывает какую то шляпу. И после соединения, сперва возвращает пустой список файлов, а лишь по "CWD /" реальный. Но качает все же...
Возможно, надо делать паузу между командами серверу. Не пойму пока.

Автор: kwisp 7.4.2010, 8:01

grio,
по-моему надо читать протокол ftp, возможно есть как в bash`e какой-нить экран для передачи @ в имени в качестве символа а не разделителя. типа обратного слэша и проч.

Автор: kwisp 7.4.2010, 8:32

Цитата(grio @ 7.4.2010, 5:13) *
QFtp работает с сервером отдельными командами. Сначала авторизуется, потом заходит в директорию, а только потом запрашивает файл.
QNetworkAccessManager пытается все сделать в одном запросе. Сперва фомирует строку ftp://login%3a%70ass@server/file из составляющих QUrl, а потом делает запрос. В этом как раз и проблема.

Так с помощью QNetworkAccessManager тоже можно сначала залогиниться а потом работать.

====добавлено====
вот вроде еще так можно попробовать ftp://login%3a%70ass#ftphost.ru/ но это тоже зависит от хоста

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)