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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QHttp и SSL  (Прочитано 6597 раз)
Вудруф
Гость
« : Март 09, 2006, 12:19 »

Их можно как-нибудь связать? Если нет, то подскажите, пожалуйста, другие решения.
Требуется получать данные по https через прокси-сервер с авторизацией на нём.
Записан
Sergeich
Гость
« Ответ #1 : Март 09, 2006, 16:31 »

В Solutions есть класс QtSslSocket, можешь юзать его и QHttp::setSocket. Залить можно с http://qt.tttxp.ru/HTML/s4.htm
Записан
Вудруф
Гость
« Ответ #2 : Март 10, 2006, 08:34 »

Спасибо
Записан
Вудруф
Гость
« Ответ #3 : Март 13, 2006, 09:39 »

Не работает... До тех пор, пока я не вызываю QHttp::setSocket, всё работает. И прокси, и пароль, и запросы. А после вызова - программа виснет на QHttp::get Грустный
Причём не обязательно при работе с прокси, попробовал работать и с локальным сервером. Та же ерунда... В чём может быть дело?
Записан
Вудруф
Гость
« Ответ #4 : Март 16, 2006, 07:32 »

QHttp::setSocket нужно вызывать уже после авторизации на Proxy-сервере? Равно как и создавать QtSslSocket из обычного?

добавлено спустя 35 минут:

 
Код:

#include <QCoreApplication>
#include <QHttp>
#include <QUrl>

#include "qtsslsocket.h"

#include "signal.h"

#include "https.h"

QCoreApplication *app;
QHttp *http;
SignalClass *signalClass;
QtSSLSocket *socket;

class Error{};

void initQHttp (char *proxy, int port, char *user, char *pwd)
{
if (!app)
{
int a = 0;
app = new QCoreApplication (a, (char**)0);
http = new QHttp (app);
socket = new QtSSLSocket (QtSSLSocket::Client, 0, app);
signalClass = new SignalClass;

QObject::connect (http, SIGNAL (done (bool)), signalClass, SLOT (isDone (bool)));
}
if (!user)
user = "";
if (!pwd)
pwd = "";
if (proxy)
http -> setProxy (proxy, port, user, pwd);
}

char * getURI (char *path)
{
if (!app)
throw Error();

QUrl url (path);
int port = url.port();
if (port == -1)
if (url.scheme() == "https")
port = 443;
else
port = 80;

http -> setHost (url.host(), port);

if (url.scheme() == "https")
{
socket -> moveToThread (http -> thread());
http -> setSocket (socket);
}

http -> get (url.path() + '?' + url.encodedQuery());

while (!(signalClass -> isFinished()))
app -> processEvents();
if (signalClass -> isError())
throw Error();
QByteArray a = http -> readAll();
char *b = new char [strlen(a.constData()) + 1];
strcpy (b, a.data());
return b;
}


добавлено спустя 1 минуту:

 Тут много чего неправильно, но запрос всего один. Я просто разбираюсь с QHttp и SSL.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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