crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QNetworkAccessManager + SOCKS5 + HTTPS
shude
  опции профиля:
сообщение 22.5.2013, 19:26
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 22.5.2013
Пользователь №: 3839

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет. Есть одна неясность:

Использую QNetworkAccessManager . Конечная цель получить возможность работать полноценно с прокси.

Вот этот тривиальный код работает как и ожидается. Все нормально. HTTP + HTTPS

QNetworkAccessManager *manager = new QNetworkAccessManager();
QNetworkRequest request(url);  

QNetworkReply *reply = this->station->get(request);
QObject::connect(reply,SIGNAL(finished()),&EL, SLOT(quit()));


А вот в этом коде, если запрос делаю на HTTPS (через прокси) , то получаю ошибку:
[99] "an unknown network-related error was detected"

QNetworkAccessManager *manager = new QNetworkAccessManager();
QNetworkRequest request(url);  

manager->setProxy(proxy); // proxy - корректный экземпляр QNetworkProxy

QNetworkReply *reply = this->station->get(request);
QObject::connect(reply,SIGNAL(finished()),&EL, SLOT(quit()));


если вместо manager->setProxy(proxy);
использовать QNetworkProxy::setApplicationProxy(proxy);
то все работает нормально.
Поковырял исходники, эта функция удаляет ProxyFactory всего приложения.
Исходя из этого пришел к такому решению:

QNetworkProxyFactory::setApplicationProxyFactory(NULL);
При установке такой прокси фабрики, предыдущий код начинает работать нормально через прокси с HTTPS запросами.
Вопрос: почему именно так решается проблема ? И как решить пробелму более элегантно ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 23.5.2013, 8:57
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


А то что используется для запроса this->station а не manager это просто опечатка?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
shude
  опции профиля:
сообщение 23.5.2013, 19:20
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 22.5.2013
Пользователь №: 3839

Спасибо сказали: 0 раз(а)




Репутация:   0  


lanz, да, опечатка. не нашел как можно отредактировать пост.

Все работает, если вызвать QNetworkProxyFactory::setApplicationProxyFactory(NULL);
Если этого не сделать то HTTPS запросы через прокси не ходят, а остальное все продолжает работать.

Не могу понять причину такого поведения.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 11:19