Russian Qt Forum
Ноябрь 23, 2024, 22:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: не могу соединиться через прокси  (Прочитано 10143 раз)
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« : Август 20, 2010, 09:02 »

пытаюсь написать учебную программу для соединения с интернетом. У нас инет через прокси, который даже не в нашем домене (может из-за этого все проблемы?). Программа выдает "Unknown error". Вот код:
Код:
void myHttp::slotRun()
{
    QString rez="success";
    QFile file("OKATO89.sav");
    QHttp http;

    QNetworkProxy proxy;
    proxy.setType(QNetworkProxy::Socks5Proxy);//HttpProxy);
    proxy.setHostName(QString("90.150.83.ххх"));
    proxy.setPort(8080);
    QNetworkProxy::setApplicationProxy(proxy);
//        http.setProxy("90.150.83.ххх",8080);   //не идет-выдает Unknown error
//        qDebug()<<http.errorString();

    if(file.open(QIODevice::WriteOnly))
    {
        http.setHost("fin.yamalfin.ru");
        http.get("/rbs/update/OKATO89.zip",&file);
        http.close();
        file.close();
    }
    else
    {
        rez="can't open file";
    }
    if(!http.errorString().isEmpty())
    {
        rez="error: "+http.errorString();
    }
    ui->l_rez->setText(rez);
}
Что не так? В инете ничего не нашел, в Assistant'е пример с NetworkProxy только в одном месте увидел и тот ничего мне не дал. Помогите!
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
BRE
Гость
« Ответ #1 : Август 20, 2010, 09:27 »

Вообще "Unknown error" присваивается переменной errorString сразу при создании объекта QHttp и до твоей проверки ее скорее всего никто не меняет.
Т.е. это не ответ на попытку установить прокси.

А вот загрузка не будет работать потому, что она выполняется асинхронно, метод get только начинает ее, сама же работа будет выполняться после выхода из slotRun().
Ну и соответственно этого не происходит из-за того, что все объекты создаются локально и разрушаются после выхода из слота.
« Последнее редактирование: Август 20, 2010, 09:38 от BRE » Записан
merke
Гость
« Ответ #2 : Август 20, 2010, 20:01 »

BRE, получается вот эти строки кода необходимо перенести в конструктор
   
   
Код:
QHttp http;
    QNetworkProxy proxy;
    proxy.setType(QNetworkProxy::Socks5Proxy);//HttpProxy);
    proxy.setHostName(QString("90.150.83.ххх"));
    proxy.setPort(8080);
    QNetworkProxy::setApplicationProxy(proxy);
    http.setProxy("90.150.83.ххх",8080);
Записан
BRE
Гость
« Ответ #3 : Август 20, 2010, 20:06 »

BRE, получается вот эти строки кода необходимо перенести в конструктор
С Qt идут примеры, в папке examples/network/http лежит пример использования класса QHttp.  Подмигивающий
Записан
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #4 : Август 23, 2010, 06:16 »

спасибо, все нашел. Теперь разберусь
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #5 : Август 23, 2010, 09:10 »

BRE, получается вот эти строки кода необходимо перенести в конструктор

или в метод main()
Записан
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #6 : Август 23, 2010, 14:10 »

погорячился я, когда пообещал разобраться. Нашел пример HTTP в Assistant, перенес его в Qt Creator, добавил описание прокси в main.cpp, запускаю скачать вот этот файл
Цитировать
, после недолгих раздумий мне сообщается, что
Цитировать
Download failed: HTTP request failed
Сейчас-то что ему не нравится? Во вложении сама программа (на всякий случай)

 А если тип прокси выбираю Socks5, то сообщение другое:
Цитировать
Download failed: Connection refused
Хрен редьки не слаще...
« Последнее редактирование: Август 23, 2010, 14:18 от mokynis » Записан

QT4, Qt5, Qt6 Debian, ArchLinux
BRE
Гость
« Ответ #7 : Август 23, 2010, 14:33 »

Возьми этот пример еще раз, добавь в функцию main() установку proxy. Больше (!) ничего не меняй. НИЧЕГО.  Улыбающийся
И попробуй.
Записан
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #8 : Август 24, 2010, 06:15 »

Все-таки дело, похоже именно в прокси. Дома (там у меня WiFi) программа с закомментированным прокси (именно та, что во вложении) сработала. На работе все те же сообщения. Что может быть?
Тут такое соображение-админы, командующие прокси, "закрутили гайки" так, что при попытке что-нибудь скачать, выдается
Цитировать
анный веб-узел ( http://somefile ) был блокирован из-за того, что веб-категория "Downloads" недопустима.
Может все дело в этом?
« Последнее редактирование: Август 24, 2010, 06:21 от mokynis » Записан

QT4, Qt5, Qt6 Debian, ArchLinux
Roman_L
Гость
« Ответ #9 : Август 24, 2010, 10:36 »

Может все дело в этом?

А у Вас на работе доменные имена резолвятся? Может тоже не определяется ip и оттого ошибки?
Соседняя головная боль: http://www.prog.org.ru/topic_14643_0.html
Записан
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #10 : Август 24, 2010, 14:29 »

Цитировать
А у Вас на работе доменные имена резолвятся?
да вроде все работает (кроме как через мою программу Грустный ). Пробовал ping сделать на тот хост, адрес которого подставляю в urlLineEdit-все определяется и пингуется. Пробовал в программе прописывать хост в виде IP-тот же ответ: "HTTP request failed"

после всяческих ухищрений добился того, что не только сообщается, что "request failed", но и в Application output пишется:
Цитировать
UNEXPECTED RESPONSE: [HTTP/1.1 403 Forbidden

mime-version: 1.0
date: Tue, 31 Aug 2010 17:31:20 YEKST
content-type: text/html
proxy-connection: keep-alive
content-length: 1779

]
UNEXPECTED RESPONSE: [HTTP/137714344.137237856 851968


]
UNEXPECTED RESPONSE: [HTTP/4390991.137035776 3932160
Это что значит (в браузере файл открывается, так что 403 ошибки быть не должно)? Приблизился я к решению или все так же далек от него?
« Последнее редактирование: Август 31, 2010, 14:38 от mokynis » Записан

QT4, Qt5, Qt6 Debian, ArchLinux
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.078 секунд. Запросов: 23.