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.