2012-04-27 116 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错误等等)。你可以在文档中找到更好的例子。