在使用Qt发送HTTP请求中通常使用的连接都是http://前缀,而有的服务器支持 https://前缀的连接,而Qt自己是支持https的,可是https访问须要用到SSL认证,而QT默认是不支持SSL认证,因此在Qt中使用https须要进行SSL认证。实现很是容易,简单几步便可完成。html
超文本传输协议HTTP被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,若是攻击者截取了Web浏览器和网站服务器之间的传输报文,就能够直接读懂其中的信息,所以HTTP协议不适合传输一些敏感信息,好比信用卡号、密码等。web
为了解决HTTP协议的这一缺陷,须要使用另外一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通讯加密。浏览器
https协议须要到ca申请证书,通常免费证书不多,须要交费。安全
http是超文本传输协议,信息是明文传输,https 则是具备安全性的ssl加密传输协议。服务器
http和https使用的是彻底不一样的链接方式,用的端口也不同,前者是80,后者是443。网络
http的链接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。post
void onSendHttpsRequest(QString url) { QNetworkAccessManager* pManager = new QNetworkAccessManager(this); QNetworkRequest request; // 发送https请求前准备工做; QSslConfiguration config; QSslConfiguration conf = request.sslConfiguration(); conf.setPeerVerifyMode(QSslSocket::VerifyNone); conf.setProtocol(QSsl::TlsV1SslV3); request.setSslConfiguration(conf); request.setUrl(QUrl(url)); // "https://www.temp.com" QNetworkReply *pReply = pManager->post(request, bytePost); connect(pReply , SIGNAL(finished()) , this , SLOT(onFinished()); connect(pReply , SIGNAL(error(QNetworkReply::NetworkError)) , this , SLOT(onError(QNetworkReply::NetworkError))); } // 请求完成; void onFinished() { QNetworkReply *pReplay = qobject_cast<QNetworkReply*>(sender()); // 保存接受的数据; QByteArray replyContent = pReplay->readAll(); } // 请求失败; void onError(QNetworkReply::NetworkError errorCode) { QNetworkReply *pReplay = qobject_cast<QNetworkReply*>(sender()); // 输出错误码及错误信息; qDebug()<< errorCode; qDebug()<< pReplay->errorString(); }
一、在 http://slproweb.com/products/Win32OpenSSL.html 中下载 Win32 OpenSSL进行安装,将bin目录下面的库拷贝出来放到生成程序exe同级目录下便可。网站
二、 libeay32.dll 、 ssleay32.dll动态连接库 直接在个人资源中进行下载。ui
http://blog.csdn.net/goforwardtostep/article/details/53588961this