以VS开发为例。由于https访问须要用到SSL认证,而QT默认是不支持SSL认证,因此在使用以前必须先作一些准备工做:html
须要安装OpenSSL库:web
一、首先打开http://slproweb.com/products/Win32OpenSSL.html网页;json
二、下载安装包,我下载的是:Win32 OpenSSL v1.0.1c Light安装包,随着时间的推动,这个版本会不断更新的;api
三、安装(exe文件)到本地,而且在安装过程当中选择将库安装到OpenSSL的安装目录(/bin)下面。app
四、将libeay32.dll 和 ssleay32.dll 文件拷贝到Qt中的存放有QtNetwork4.dll和QtNetworkd4.dll的文件目录下。个人是D:\Qt\4.8.2\binjsp
如今能够编写代码:post
QNetworkRequest request;
QSslConfiguration config;.net
config.setPeerVerifyMode(QSslSocket::VerifyNone);
config.setProtocol(QSsl::TlsV1);
request.setSslConfiguration(config);htm
上面三句添回检验证书模式与协议,并设置给对应QNetworkRequest,很是重要,在这里花费了我半天的时间才找到问题blog
request.setUrl(QUrl("https://www.xxx.com/html.jsp"));
request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json"));
request.setHeader(QNetworkRequest::ContentLengthHeader, bytePost.length());
QNetworkReply *pReply = pManager->post(request, bytePost);
备注:
SSL证书认证,有如下三种:
1.
QSslConfiguration config ;
config.setPeerVerifyMode(QSslSocket::VerifyNone);
config.setProtocol(QSsl::TlsV1);
QNetworkRequest request(req);
request.setSslConfiguration(config);
2.
QNetworkRequest request ;
request.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, true);
QNetworkReply* reply = QNetworkAccessManager::createRequest(op, request, outgoingData);
reply->ignoreSslErrors();
3.
QSslConfiguration config ;
QList<QSslCertificate> certs = QSslCertificate::fromPath("C:\\FiddlerRoot.crt");
config.setCaCertificates(certs);
QNetworkRequest request(req);
request.setSslConfiguration(config);
http://blog.csdn.net/itjobtxq/article/details/8244509