2012-04-27 2 views
1

У меня есть программа, созданная с создателем Qt. Мне нужно отправить сообщение https на серверы C2DM компании Google.Qt creator SSL enable

Когда я пытаюсь использовать QSslSocket, он говорит, что мой SSL не работает.

В документации Qt указано, что оно не поставляется с поддержкой SSL по юридическим причинам, а QSslSocket - это всего лишь оболочка и что мне нужно установить OpenSSL самостоятельно. Я попытался скопировать DLL, но он все еще не работает. Может ли кто-нибудь пройти меня через шаги по установке OpenSSL и заставить его работать с Qt Creator?

+0

Какие DLL вы скопировали? –

ответ

0

Почему бы не использовать QNetworkAccessManager? Я использую что-то вроде этого, чтобы получить возможность отправлять JSON в веб-службу:

void HttpPoster::post(){ 

    if(!manager) 
    manager = new QNetworkAccessManager(this); 

    QSslConfiguration config = QSslConfiguration::defaultConfiguration(); 
    config.setPeerVerifyMode(QSslSocket::VerifyNone); 
    //config.setProtocol(QSsl::TlsV1); 

    QNetworkRequest request ; 
    request.setUrl(QUrl("https://somehost.somedomain")); 
    request.setRawHeader("User-Agent", "MyApp"); 
    request.setRawHeader("Content-type", "text/json"); 

    request.setSslConfiguration(config); 

    if(!reply){ 
    reply = manager->post(request,m_Data); 
    } 

    connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),this,SLOT(handleErrors(QNetworkReply::NetworkError))); 
    connect(reply,SIGNAL(sslErrors(QList<QSslError>)),this,SLOT(handleSSLErrors(QList<QSslError>))); 
    connect(reply,SIGNAL(finished()),this,SLOT(replyFinished())); 

} 

Там же некоторые методы опущенные (обрабатывать ошибки, обрабатывать ответы, обрабатывать ошибки SSL, и т.д.). В документах можно найти гораздо лучшие примеры.