Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT4] QHttp + ssl -> GET по https 
:(
    Опции темы
neosapient
Дата 1.7.2008, 18:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 4



Помогите новичку отправить запрос по https.
Хочу загрузить данные, для начала в файл. На сайте надо проходить авторизацию.

Прочел доку и кучу макулатуры литературы. В результате совсем запутался, а в голове каша.  smile 

Вот понасобирал строчки кода, как бы его исправить
Код


    QFile file("sometext.htm");
    QHttp http;
    if (file.open(QIODevice::WriteOnly)) {
        http.setUser("login","password");
        http.setHost("www.someurl.com");
        http.get("/sometext.htm", &file);
        http.close();
        file.close();
    }





Это сообщение отредактировал(а) neosapient - 2.7.2008, 12:38
PM MAIL   Вверх
SABROG
Дата 2.7.2008, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Код

http.setHost("www.someurl.com", QHttp::ConnectionModeHttps);



--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
neosapient
Дата 2.7.2008, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 4



Всё в разброд пошло: стоит подключить заголовочный файл
Код

#include <QHttp>


И сразу при попытке скомпилировать выдаются ошибки
Код

c:\Qt\4.4.0\include\QtNetwork\qhttp.h(34) : error C2144: syntax error : 'int' should be preceded by ';'
c:\Qt\4.4.0\include\QtNetwork\qhttp.h(34) : error C2501: 'QT_BEGIN_NAMESPACE' : missing storage-class or type specifiers
c:\Qt\4.4.0\include\QtNetwork\qhttp.h(34) : error C2146: syntax error : missing ';' before identifier 'QtNetworkModule'
c:\Qt\4.4.0\include\QtNetwork\qhttp.h(34) : error C2371: 'QtValidLicenseForNetworkModule' : redefinition; different basic types
        d:\qt\include\QtCore\../../src\corelib\global\qglobal.h(2042) : see declaration of 'QtValidLicenseForNetworkModule'
c:\Qt\4.4.0\include\QtNetwork\qhttp.h(34) : error C2501: 'QtNetworkModule' : missing storage-class or type specifiers
main.cpp(11) : error C2144: syntax error : 'int' should be preceded by ';'
main.cpp(11) : error C2501: 'QT_END_NAMESPACE' : missing storage-class or type specifiers
 

P.S.
Для примера собирается проект, в котором Qhttp не используются вообще
Код

#include <QApplication>
#include <QPushButton>
#include <QHttp>  // <-- без этого заголовка всё компилиться успешно

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QPushButton *button = new QPushButton("Quit");
    QObject::connect(button, SIGNAL(clicked()),
                     &app, SLOT(quit()));
    qDebug("Hello");
    button->show();
    return app.exec();
}


P.P.S.
Пути прописаны
C:\Qt\4.4.0\include\QtNetwork


Это сообщение отредактировал(а) neosapient - 2.7.2008, 12:53
PM MAIL   Вверх
SABROG
Дата 2.7.2008, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Похоже на косяки с компилятором.

Версия Qt для Msvc или Mingw ? Чем собираеш ? Версия компилятора ?

Это сообщение отредактировал(а) SABROG - 2.7.2008, 13:04


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
neosapient
Дата 2.7.2008, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 4



Цитата(SABROG @ 2.7.2008,  13:02)
Похоже на косяки с компилятором.

Версия Qt для Msvc или Mingw ? Чем собираеш ? Версия компилятора ?

На машине VC6 и VC7 (обычно использую VC7 )

Изначально ставил opensource Qt4.3 . Месяц назад скачал и поставил лицензионный пакет интегрированный под VC7  Qt4.4

Собираю компилятором VC7 через командную строку


P.S.

Что обидно, пример из opensource Qt4.3 \examples\network\http собирается
А пример из лицензии Qt4.4 \examples\network\http НЕ собираеться - обидно


--------------------

Так, а где объявлены переменные QT_BEGIN_NAMESPACE и QT_END_NAMESPACE  и почему они не видяться?

Это сообщение отредактировал(а) neosapient - 2.7.2008, 13:27
PM MAIL   Вверх
anatox91
Дата 2.7.2008, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



а в  .pro-файле есть строчка
Код

QT += network

?


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
neosapient
Дата 2.7.2008, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 4



Цитата(anatox91 @ 2.7.2008,  13:25)
а в  .pro-файле есть строчка
Код

QT += network

?

О, помогло избавится от этих ошибок
Код

c:\Qt\4.4.0\include\QtNetwork\qhttp.h(34) : error C2144: syntax error : 'int' should be preceded by ';'
c:\Qt\4.4.0\include\QtNetwork\qhttp.h(34) : error C2501: 'QT_BEGIN_NAMESPACE' : missing storage-class or type specifiers
c:\Qt\4.4.0\include\QtNetwork\qhttp.h(34) : error C2146: syntax error : missing ';' before identifier 'QtNetworkModule'
c:\Qt\4.4.0\include\QtNetwork\qhttp.h(34) : error C2371: 'QtValidLicenseForNetworkModule' : redefinition; different basic types
        d:\qt\include\QtCore\../../src\corelib\global\qglobal.h(2042) : see declaration of 'QtValidLicenseForNetworkModule'
c:\Qt\4.4.0\include\QtNetwork\qhttp.h(34) : error C2501: 'QtNetworkModule' : missing storage-class or type specifiers
main.cpp(11) : error C2144: syntax error : 'int' should be preceded by ';'
main.cpp(11) : error C2501: 'QT_END_NAMESPACE' : missing storage-class or type specifiers


Пошел тыкаться дальше
Ждите постов
PM MAIL   Вверх
neosapient
Дата 2.7.2008, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 4



Почти готов сдаться smile .

В архиве пример из QT4.3   %QT4Dir%\examples\network\http

Когда его запускаешь и указываешь цель скачивания - он подвисает при скачивании.

Кто-нибудь решил эту проблему ?



Это сообщение отредактировал(а) neosapient - 2.7.2008, 18:57

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  http.rar 424,09 Kb
PM MAIL   Вверх
SABROG
Дата 2.7.2008, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Qt сам собирал ? С OpenSSL ?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
neosapient
Дата 2.7.2008, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 4



Да, QT сам собрал.


Цитата

С OpenSSL ? 

Я так понял, что OpenSSL уже встроен в комплект. Выставил только флаги.


Тема временно переезжает на http://forum.vingrad.ru/forum/topic-219086...y1568000/0.html
Надеюсь сюда ещё вернемся  smile 

-------------
сутки спустя
Ну вот и вернулись.
Так я прав, что вариант OpenSSL уже входит в комплект QT ?
-------------
спустя полдня

OpenSSL надо ставить отдельно

Решил пересобрать согласно статьям

http://bombus.jrudevels.org/wiki/howto/psi_qt4
http://forum.sources.ru/index.php?showtopi...mp;view=showall


Это сообщение отредактировал(а) neosapient - 3.7.2008, 16:51
PM MAIL   Вверх
neosapient
Дата 3.7.2008, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 4



Пересобрал QT4 с флагом -openssl, впрочем так и было до того

Попробовал собрать проект
%QTDIR%\examples\network\securesocketclient

Вылезла куча ошибок
Код

        link /LIBPATH:"d:\qt\lib" /NOLOGO /DEBUG /SUBSYSTEM:WINDOWS /OUT:debug\s
ecuresocketclient.exe @C:\DOCUME~1\dealer\LOCALS~1\Temp\nmF.tmp
certificateinfo.obj : error LNK2019: unresolved external symbol "__declspec(dlli
mport) public: class QString __thiscall QSslCertificate::subjectInfo(enum QSslCe
rtificate::SubjectInfo)const " (__imp_?subjectInfo@QSslCertificate@@QBE?AVQStrin
g@@W4SubjectInfo@1@@Z) referenced in function "public: void __thiscall Certifica
teInfo::setCertificateChain(class QList<class QSslCertificate> const &)" (?setCe
rtificateChain@CertificateInfo@@QAEXABV?$QList@VQSslCertificate@@@@@Z)
certificateinfo.obj : error LNK2019: unresolved external symbol "__declspec(dlli
mport) public: class QString __thiscall QSslCertificate::issuerInfo(enum QSslCer
tificate::SubjectInfo)const " (__imp_?issuerInfo@QSslCertificate@@QBE?AVQString@
@W4SubjectInfo@1@@Z) referenced in function "private: void __thiscall Certificat
eInfo::updateCertificateInfo(int)" (?updateCertificateInfo@CertificateInfo@@AAEX
H@Z)
certificateinfo.obj : error LNK2019: unresolved external symbol "__declspec(dlli
mport) public: __thiscall QSslCertificate::QSslCertificate(class QSslCertificate
 const &)" (__imp_??0QSslCertificate@@QAE@ABV0@@Z) referenced in function "priva
te: void __thiscall QList<class QSslCertificate>::node_copy(struct QList<class Q
SslCertificate>::Node *,struct QList<class QSslCertificate>::Node *,struct QList
<class QSslCertificate>::Node *)" (?node_copy@?$QList@VQSslCertificate@@@@AAEXPA
UNode@1@00@Z)
certificateinfo.obj : error LNK2019: unresolved external symbol "__declspec(dlli
mport) public: __thiscall QSslCertificate::~QSslCertificate(void)" (__imp_??1QSs
lCertificate@@QAE@XZ) referenced in function "public: void * __thiscall QSslCert
ificate::`scalar deleting destructor'(unsigned int)" (??_GQSslCertificate@@QAEPA
XI@Z)
sslclient.obj : error LNK2001: unresolved external symbol "__declspec(dllimport)
 public: __thiscall QSslCertificate::~QSslCertificate(void)" (__imp_??1QSslCerti
ficate@@QAE@XZ)
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) publ
ic: static bool __cdecl QSslSocket::supportsSsl(void)" (__imp_?supportsSsl@QSslS
ocket@@SA_NXZ) referenced in function _main
sslclient.obj : error LNK2001: unresolved external symbol "protected: virtual __
int64 __thiscall QSslSocket::writeData(char const *,__int64)" (?writeData@QSslSo
cket@@MAE_JPBD_J@Z)
sslclient.obj : error LNK2001: unresolved external symbol "protected: virtual __
int64 __thiscall QSslSocket::readData(char *,__int64)" (?readData@QSslSocket@@MA
E_JPAD_J@Z)
sslclient.obj : error LNK2001: unresolved external symbol "public: virtual bool
__thiscall QSslSocket::waitForBytesWritten(int)" (?waitForBytesWritten@QSslSocke
t@@UAE_NH@Z)
sslclient.obj : error LNK2001: unresolved external symbol "public: virtual bool
__thiscall QSslSocket::waitForReadyRead(int)" (?waitForReadyRead@QSslSocket@@UAE
_NH@Z)
sslclient.obj : error LNK2001: unresolved external symbol "public: virtual bool
__thiscall QSslSocket::canReadLine(void)const " (?canReadLine@QSslSocket@@UBE_NX
Z)
sslclient.obj : error LNK2001: unresolved external symbol "public: virtual __int
64 __thiscall QSslSocket::bytesToWrite(void)const " (?bytesToWrite@QSslSocket@@U
BE_JXZ)
sslclient.obj : error LNK2001: unresolved external symbol "public: virtual __int
64 __thiscall QSslSocket::bytesAvailable(void)const " (?bytesAvailable@QSslSocke
t@@UBE_JXZ)
sslclient.obj : error LNK2001: unresolved external symbol "public: virtual bool
__thiscall QSslSocket::atEnd(void)const " (?atEnd@QSslSocket@@UBE_NXZ)
sslclient.obj : error LNK2001: unresolved external symbol "public: virtual void
__thiscall QSslSocket::close(void)" (?close@QSslSocket@@UAEXXZ)
sslclient.obj : error LNK2001: unresolved external symbol "public: virtual int _
_thiscall QSslSocket::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_met
acall@QSslSocket@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
sslclient.obj : error LNK2001: unresolved external symbol "public: virtual void
* __thiscall QSslSocket::qt_metacast(char const *)" (?qt_metacast@QSslSocket@@UA
EPAXPBD@Z)
sslclient.obj : error LNK2001: unresolved external symbol "public: virtual struc
t QMetaObject const * __thiscall QSslSocket::metaObject(void)const " (?metaObjec
t@QSslSocket@@UBEPBUQMetaObject@@XZ)
sslclient.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)
 public: void __thiscall QSslSocket::connectToHostEncrypted(class QString const
&,unsigned short,class QFlags<enum QIODevice::OpenModeFlag>)" (__imp_?connectToH
ostEncrypted@QSslSocket@@QAEXABVQString@@GV?$QFlags@W4OpenModeFlag@QIODevice@@@@
@Z) referenced in function "private: void __thiscall SslClient::secureConnect(vo
id)" (?secureConnect@SslClient@@AAEXXZ)
sslclient.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)
 public: __thiscall QSslSocket::QSslSocket(class QObject *)" (__imp_??0QSslSocke
t@@QAE@PAVQObject@@@Z) referenced in function "private: void __thiscall SslClien
t::secureConnect(void)" (?secureConnect@SslClient@@AAEXXZ)
sslclient.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)
 public: virtual __thiscall QSslSocket::~QSslSocket(void)" (__imp_??1QSslSocket@
@UAE@XZ) referenced in function "public: virtual void * __thiscall QSslSocket::`
scalar deleting destructor'(unsigned int)" (??_GQSslSocket@@UAEPAXI@Z)
sslclient.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)
 public: __thiscall QSslCipher::~QSslCipher(void)" (__imp_??1QSslCipher@@QAE@XZ)
 referenced in function "private: void __thiscall SslClient::socketEncrypted(voi
d)" (?socketEncrypted@SslClient@@AAEXXZ)
sslclient.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)
 public: int __thiscall QSslCipher::supportedBits(void)const " (__imp_?supported
Bits@QSslCipher@@QBEHXZ) referenced in function "private: void __thiscall SslCli
ent::socketEncrypted(void)" (?socketEncrypted@SslClient@@AAEXXZ)
sslclient.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)
 public: int __thiscall QSslCipher::usedBits(void)const " (__imp_?usedBits@QSslC
ipher@@QBEHXZ) referenced in function "private: void __thiscall SslClient::socke
tEncrypted(void)" (?socketEncrypted@SslClient@@AAEXXZ)
sslclient.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)
 public: class QString __thiscall QSslCipher::authenticationMethod(void)const "
(__imp_?authenticationMethod@QSslCipher@@QBE?AVQString@@XZ) referenced in functi
on "private: void __thiscall SslClient::socketEncrypted(void)" (?socketEncrypted
@SslClient@@AAEXXZ)
sslclient.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)
 public: class QString __thiscall QSslCipher::name(void)const " (__imp_?name@QSs
lCipher@@QBE?AVQString@@XZ) referenced in function "private: void __thiscall Ssl
Client::socketEncrypted(void)" (?socketEncrypted@SslClient@@AAEXXZ)
sslclient.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)
 public: class QSslCipher __thiscall QSslSocket::sessionCipher(void)const " (__i
mp_?sessionCipher@QSslSocket@@QBE?AVQSslCipher@@XZ) referenced in function "priv
ate: void __thiscall SslClient::socketEncrypted(void)" (?socketEncrypted@SslClie
nt@@AAEXXZ)
sslclient.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)
 public: void __thiscall QSslSocket::ignoreSslErrors(void)" (__imp_?ignoreSslErr
ors@QSslSocket@@QAEXXZ) referenced in function "private: void __thiscall SslClie
nt::sslErrors(class QList<class QSslError> const &)" (?sslErrors@SslClient@@AAEX
ABV?$QList@VQSslError@@@@@Z)
sslclient.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)
 public: class QString __thiscall QSslError::errorString(void)const " (__imp_?er
rorString@QSslError@@QBE?AVQString@@XZ) referenced in function "private: void __
thiscall SslClient::sslErrors(class QList<class QSslError> const &)" (?sslErrors
@SslClient@@AAEXABV?$QList@VQSslError@@@@@Z)
sslclient.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)
 public: class QList<class QSslCertificate> __thiscall QSslSocket::peerCertifica
teChain(void)const " (__imp_?peerCertificateChain@QSslSocket@@QBE?AV?$QList@VQSs
lCertificate@@@@XZ) referenced in function "private: void __thiscall SslClient::
displayCertificateInfo(void)" (?displayCertificateInfo@SslClient@@AAEXXZ)
sslclient.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)
 public: __thiscall QSslError::QSslError(class QSslError const &)" (__imp_??0QSs
lError@@QAE@ABV0@@Z) referenced in function "private: void __thiscall QList<clas
s QSslError>::node_copy(struct QList<class QSslError>::Node *,struct QList<class
 QSslError>::Node *,struct QList<class QSslError>::Node *)" (?node_copy@?$QList@
VQSslError@@@@AAEXPAUNode@1@00@Z)
sslclient.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)
 public: __thiscall QSslError::~QSslError(void)" (__imp_??1QSslError@@QAE@XZ) re
ferenced in function "public: void * __thiscall QSslError::`scalar deleting dest
ructor'(unsigned int)" (??_GQSslError@@QAEPAXI@Z)
debug\securesocketclient.exe : fatal error LNK1120: 31 unresolved externals
NMAKE : fatal error U1077: 'link' : return code '0x460'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio .NET 2003\
VC7\BIN\nmake.exe"' : return code '0x2'
Stop.


Какую либу забыл подключить ?
QtNetwork включена
PM MAIL   Вверх
neosapient
Дата 4.7.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 4



Скачал и установил http://www.slproweb.com/download/Win32OpenSSL-0_9_8g.exe  

переконфигурировал QT
configure -openssl -I c:\openssl\include -L c:\openssl\lib

собираю пример

Код

#include <QtNetwork>
#include <QtCore>
#include <QSslSocket>

int main(int argc, char **argv)
{
    QCoreApplication app(argc, argv);

    QSslSocket socket;
    //socket.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, "130.226.169.133", 3128));
    socket.connectToHostEncrypted("www.paypal.com", 443);
    socket.write("GET / HTTP/1.0\r\n\r\n");
    while (socket.waitForReadyRead())
        qDebug() << socket.readAll().data();
}


появляются ошибки не найденной библиотеки
Код

Compiling...
main.cpp
Linking...
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QSslSocket::~QSslSocket(void)" (__imp_??1QSslSocket@@UAE@XZ) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual bool __thiscall QSslSocket::waitForReadyRead(int)" (__imp_?waitForReadyRead@QSslSocket@@UAE_NH@Z) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall QSslSocket::connectToHostEncrypted(class QString const &,unsigned short,class QFlags)" (__imp_?connectToHostEncrypted@QSslSocket@@QAEXABVQString@@GV?$QFlags@W4OpenModeFlag@QIODevice@@@@@Z) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QSslSocket::QSslSocket(class QObject *)" (__imp_??0QSslSocket@@QAE@PAVQObject@@@Z) referenced in function _main
debug\main.exe : fatal error LNK1120: 4 unresolved externals


Что требуется подключить, чтобы собрать exe-шник ?

Пример прикреплен в архиве

Это сообщение отредактировал(а) neosapient - 4.7.2008, 21:06

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  QtSSL5lines.rar 2,33 Kb
PM MAIL   Вверх
neosapient
Дата 4.7.2008, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 4



Windows XP, VC7, QT 4.3.4
----------------
Цитата

Compiling...
main.cpp
Linking...
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QSslSocket::~QSslSocket(void)" (__imp_??1QSslSocket@@UAE@XZ) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual bool __thiscall QSslSocket::waitForReadyRead(int)" (__imp_?waitForReadyRead@QSslSocket@@UAE_NH@Z) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall QSslSocket::connectToHostEncrypted(class QString const &,unsigned short,class QFlags)" (__imp_?connectToHostEncrypted@QSslSocket@@QAEXABVQString@@GV?$QFlags@W4OpenModeFlag@QIODevice@@@@@Z) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QSslSocket::QSslSocket(class QObject *)" (__imp_??0QSslSocket@@QAE@PAVQObject@@@Z) referenced in function _main
debug\main.exe : fatal error LNK1120: 4 unresolved externals


Тут нашел ответ на ошибку не найденой QtNetworkd.lib / QtNetworkd4.lib
http://prog.org.ru/forum/index.php/topic,6281.0.html


Надо скоректировать строки 
%QTDIR%\src\network\network.pro

Код

... выяснилось, что надо отредактировать network.pro, т.к. линкёр не находит ssleay32.obj и libeay32.obj (потому что их и нету):

Есть:

Code:
        win32:LIBS += ssleay32 libeay32А надо:

Code:
        win32:LIBS += ssleay32.lib libeay32.lib


Затем следует пересобрать QtNetworkd.lib / QtNetworkd4.lib


Это сообщение отредактировал(а) neosapient - 5.7.2008, 10:41
PM MAIL   Вверх
neosapient
Дата 5.7.2008, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 4



Вроде получилось

httprequest.h
Код

#include <QDialog>

class QHttp;
class QSslSocket;

class HttpRequest : public QObject
{
    Q_OBJECT

    public:
        HttpRequest();
    void get(QString dstUrl, QString Login, QString Password);
    private slots:
        void httpRequestStarted(int requestId);
        void httpRequestFinished(int requestId, bool error);

    private:
        QHttp *http;
        QSslSocket *socket;
        int httpGetId;
};



httprequest.cpp
Код

#include <iostream>
#include <QtGui>
#include <QtNetwork>

#include "httprequest.h"

HttpRequest::HttpRequest()
    : QObject()
{
    http = new QHttp(this);
    socket = new QSslSocket(this);

    connect(http, SIGNAL(requestFinished(int, bool)),
                this, SLOT(httpRequestFinished(int, bool)));
    connect(http, SIGNAL(requestStarted(int)),
                this, SLOT(httpRequestStarted(int)));
}

void HttpRequest::get(QString dstUrl, QString Login, QString Password)
{
    QUrl url(dstUrl);

    printf("port is %d\n", url.port());

    http->setSocket(socket);
    http->setUser(Login,Password);
    http->setHost(url.host(), QHttp::ConnectionModeHttps, url.port() != -1 ? url.port() : 443);
    //http->setProxy ( ProxyIP, ProxyPort, ProxyLogin, ProxyPassword) ;

    httpGetId = http->get(url.path());
}

void HttpRequest::httpRequestStarted(int id)
{
    printf("started request #%d\n", id);
}

void HttpRequest::httpRequestFinished(int requestId, bool error)
{
    if (requestId != httpGetId) {
        return;
    }
    printf("finished request #%d\n", requestId);

    if (error) {
        printf("%s\n", http->errorString());
    } 
    else {
        QString *str = new QString(http->readAll());
        QChar *data = str->data();
        while (*data != 0) {
            std::cout << (char *) data;
            ++data;
            }
        printf("\n");
    }
    exit(1);
}



main.cpp
Код

#include <QtGui>
#include <QtNetwork>
#include <QCoreApplication>

#include "httprequest.h"

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);
    HttpRequest request;
    request.get("https://www.someurl.com:443/sometext.htm", "login", "password" );

    return app.exec();
}


main.pro
Код

######################################################################
# Automatically generated by qmake (2.01a) ?? 3. ??? 13:38:59 2008
######################################################################

TEMPLATE = app
TARGET = 
DEPENDPATH += .
INCLUDEPATH += .
QT += network
CONFIG += qt console


# Input
HEADERS += httprequest.h
SOURCES += httprequest.cpp main.cpp


Присоединённый файл ( Кол-во скачиваний: 17 )
Присоединённый файл  qhttp_ssl.rar 16,86 Kb
PM MAIL   Вверх
neosapient
Дата 5.7.2008, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 4



Ещё вопрос, чтоб завершить тему.

Код я представил в посте выше.
Надо научиться обрабатывать ошибки SSL. 

Я правильон понимаю, что следует подключить обработку ошибки 
от QSslSocket *socket сигнала SIGNAL(sslErrors ( const QList<QSslError> & errors ) 
на QHttp *http слот ignoreSslErrors()
Код

    connect(socket, SIGNAL(sslErrors ( const QList<QSslError> & errors ) ),
                http, SLOT(ignoreSslErrors()));


Либо из-за того , что сокет ssl передан объекту qhttp, то от QHttp *http
сигнал SIGNAL(sslErrors ( const QList<QSslError> & errors ) будет приходить 
на слот ignoreSslErrors()
Код

    connect(http, SIGNAL(sslErrors ( const QList<QSslError> & errors ) ),
                http, SLOT(ignoreSslErrors()));


Откуда приходит сигнал ? Какая форма записи будет правильной ?

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

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

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


 




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


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

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