Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QNetworkAccessManager :: авторизация
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
grio
Салют, парни!

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

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

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

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

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

покажи код.
DIMEDROLL
Цитата(grio @ 6.4.2010, 18:01) *
Салют, парни!

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

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

покажи код.


QFtp работает с сервером отдельными командами. Сначала авторизуется, потом заходит в директорию, а только потом запрашивает файл.
QNetworkAccessManager пытается все сделать в одном запросе. Сперва фомирует строку ftp://login:pass@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
Цитата(grio @ 7.4.2010, 8:13) *
создать на ftp пользователя с e-mail в качестве логина
в тотале в качестве пароля предлагается электропочта, но не в качестве имени. Может всё таки не правильно использовать электропочту в имени пользователя?
grio
Цитата(Litkevich Yuriy @ 7.4.2010, 5:56) *
Цитата(grio @ 7.4.2010, 8:13) *
создать на ftp пользователя с e-mail в качестве логина
в тотале в качестве пароля предлагается электропочта, но не в качестве имени. Может всё таки не правильно использовать электропочту в имени пользователя?

Правильно или нет, но вот такой у меня хостинг провайдер...
Сейчас поставил Сербера на локальную машину - проблем с QFtp не наблюдаю.
Значит да, дело в удаленном сервере. И нашел пример фтп-клиента с авторизацией:
Исходники довольно хитрые, да и комменты на французском, что скорее мешает, чем помогает.
Но этот фтп-клиент качает с моего хостинга. Правда вместо %% загрузки показывает какую то шляпу. И после соединения, сперва возвращает пустой список файлов, а лишь по "CWD /" реальный. Но качает все же...
Возможно, надо делать паузу между командами серверу. Не пойму пока.
kwisp
grio,
по-моему надо читать протокол ftp, возможно есть как в bash`e какой-нить экран для передачи @ в имени в качестве символа а не разделителя. типа обратного слэша и проч.
kwisp
Цитата(grio @ 7.4.2010, 5:13) *
QFtp работает с сервером отдельными командами. Сначала авторизуется, потом заходит в директорию, а только потом запрашивает файл.
QNetworkAccessManager пытается все сделать в одном запросе. Сперва фомирует строку ftp://login:pass@server/file из составляющих QUrl, а потом делает запрос. В этом как раз и проблема.

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

====добавлено====
вот вроде еще так можно попробовать ftp://login:pass#ftphost.ru/ но это тоже зависит от хоста
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.