Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] QNetworkProxy http не работает, у кого - нибудь получилось сделать это? 
:(
    Опции темы
null56
Дата 19.8.2009, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 6
Всего: 12



Работая с сокетами, хочу заставить работать через прокси... но никак
Через Sock5, через тунель, у меня всё работает... а именно
сделал ssh тунель с компа
Цитата

ssh -D  5025  МОЙ КОМП

и код
Код

    QNetworkProxy proxy;
    proxy.setType(QNetworkProxy::Socks5Proxy);
    proxy.setHostName("127.0.0.1");
    proxy.setPort(5025);
    QNetworkProxy :: setApplicationProxy(proxy);
    SslSocket client;
    client.setProxy(proxy);  // это уже необязательно
    client.connectToHostEncrypted("мой комп", 6666);
    return a.exec();

Всё пашет.... Но стоит обратится к какой - нибудь проксе по хттп
Код

       QNetworkProxy proxy;
    proxy.setType(QNetworkProxy::HttpProxy);
    //proxy.setCapabilities(QNetworkProxy::CachingCapability | QNetworkProxy::HostNameLookupCapability);
    proxy.setHostName("мой хтмл прокси");
    proxy.setPort(8080);
    //-
    SslSocket client;
    client.setProxy(proxy);
    client.connectToHostEncrypted("95.84.169.209", 6666);

Получаю (не сразу)
Цитата

"Proxy connection closed prematurely" 

если добавлю 
Код

proxy.setCapabilities(QNetworkProxy::CachingCapability | QNetworkProxy::HostNameLookupCapability);

то получаю, сразу
Цитата
 "Operation on socket is not supported"  


Вопрос: что я делаю не так? и в чем отличие?

Вот пример из ассистента:
Код

 QNetworkProxy proxy;
 proxy.setType(QNetworkProxy::Socks5Proxy);
 proxy.setHostName("proxy.example.com");
 proxy.setPort(1080);
 proxy.setUser("username");
 proxy.setPassword("password");
 QNetworkProxy::setApplicationProxy(proxy);


вот пример из браузера арора
Код

    if (settings.value(QLatin1String("enabled"), false).toBool()) {
        int proxyType = settings.value(QLatin1String("type"), 0).toInt();
        if (proxyType == 0)
            proxy = QNetworkProxy::Socks5Proxy;
        else if (proxyType == 1)
            proxy = QNetworkProxy::HttpProxy;
        else { // 2
            proxy.setType(QNetworkProxy::HttpCachingProxy);
#if QT_VERSION >= 0x040500
            proxy.setCapabilities(QNetworkProxy::CachingCapability | QNetworkProxy::HostNameLookupCapability);
#endif
        }
        proxy.setHostName(settings.value(QLatin1String("hostName")).toString());
        proxy.setPort(settings.value(QLatin1String("port"), 1080).toInt());
        proxy.setUser(settings.value(QLatin1String("userName")).toString());
        proxy.setPassword(settings.value(QLatin1String("password")).toString());
    }
#if QT_VERSION >= 0x040500
    NetworkProxyFactory *proxyFactory = new NetworkProxyFactory;
    if (proxy.type() == QNetworkProxy::HttpCachingProxy) {
        proxyFactory->setHttpProxy(proxy);
        proxyFactory->setGlobalProxy(QNetworkProxy::DefaultProxy);
    } else {
        proxyFactory->setHttpProxy(QNetworkProxy::DefaultProxy);
        proxyFactory->setGlobalProxy(proxy);
    }
    setProxyFactory(proxyFactory);
#else
    setProxy(proxy);
#endif
    settings.endGroup();


Здесь используется в версиях ранее 4,5 тот же QNetWork прокси...
правда в арора это используется в  QNetworkProxyFactory

Я не знаю от чего даже отталкиваться, если кто - то использовал в своих целях QNetworkProxy или просто умудрялись авторизовываться на прокси, поделитесь пожалуйста опытом

Заранее благодарен за помощь

PM MAIL   Вверх
null56
Дата 20.8.2009, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 6
Всего: 12



Ситуация проясняется... попробовал через свой прокси законнектится к гуглу, всё заработало... даже шифрование подтвердилось, но вот чего к моему не хочет сокету, который висит у меня на компе... без прокси пашет
Код

    QNetworkProxy proxy;
    proxy.setType(QNetworkProxy::HttpProxy);
    proxy.setHostName("какой - то.no-ip.org");
    proxy.setPort(8080);
    SslSocket client;
    client.setProxy(proxy);
    client.connectToHostEncrypted("google.com", 8080);
или
    client.connectToHost("google.com", 8080);


Это сообщение отредактировал(а) null56 - 20.8.2009, 20:11
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0684 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.