Qt创建者SSL启用

时间:2012-04-27 11:55:28

标签: qt ssl qt-creator

我有一个用Qt创建者构建的程序。我需要向Google的C2DM服务器发送https帖子。

当我尝试使用QSslSocket时,它说我的SSL无效。

Qt文档声明由于法律原因它没有提供SSL支持,而QSslSocket只是一个包装器,我需要自己安装OpenSSL。我试过复制DLL但它仍然无法正常工作。有人可以指导我完成安装OpenSSL并让它与Qt Creator一起工作的步骤吗?

1 个答案:

答案 0 :(得分: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错误等)。您可以在文档中找到更好的示例。