在使用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