2012-04-27 113 views
1

我有一個使用Qt創建者構建的程序。我需要向Google的C2DM服務器發送https信息。Qt創建者SSL啓用

當我嘗試使用QSslSocket時,它說我的SSL不工作。

Qt文檔指出,由於法律原因它沒有提供SSL支持,QSslSocket只是一個包裝,我需要自己安裝OpenSSL。我試圖複製DLL,但它仍然無法正常工作。有人可以通過安裝OpenSSL並使其與Qt Creator一起使用嗎?

+0

你拷貝了哪些dll? – 2012-05-14 17:19:16

回答

0

爲什麼不使用QNetworkAccessManager?我用這樣的張貼JSON的Web服務:

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錯誤等等)。你可以在文檔中找到更好的例子。