QT https post请求(QNetworkRequest要设置SSL证书,而SSL证书认证有三种,实测成功)

以VS开发为例。因为https访问需要用到SSL认证,而QT默认是不支持SSL认证,所以在使用之前必须先做一些准备工作:

需要安装OpenSSL库:

1、首先打开http://slproweb.com/products/Win32OpenSSL.html网页;

2、下载安装包,我下载的是:Win32 OpenSSL v1.0.1c Light安装包,随着时间的推进,这个版本会不断更新的;

3、安装(exe文件)到本地,并且在安装过程中选择将库安装到OpenSSL的安装目录(/bin)下面。

4、将libeay32.dll 和 ssleay32.dll 文件拷贝到Qt中的存放有QtNetwork4.dll和QtNetworkd4.dll的文件目录下。我的是D:\Qt\4.8.2\bin

现在可以编写代码:

QNetworkRequest request;
QSslConfiguration config;

config.setPeerVerifyMode(QSslSocket::VerifyNone);
 config.setProtocol(QSsl::TlsV1);
 request.setSslConfiguration(config);

上面三句添回检验证书模式与协议,并设置给对应QNetworkRequest,非常重要,在这里花费了我半天的时间才找到问题

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

时间: 2024-12-25 23:27:47

QT https post请求(QNetworkRequest要设置SSL证书,而SSL证书认证有三种,实测成功)的相关文章

LNMP(Nginx负载均衡,SSL原理,Nginx配置SSL,生产SSL密钥对)

一.Nginx负载均衡 负载均衡:单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况.那么负载均衡的前提就是要有多台服务器才能实现,也就是两台以上即可. 在开始部署负载均衡之前,我们先来介绍一个命令,dig命令需要yum安装一下 [[email protected] ~]# yum install bind-utils [[email protected] ~]# dig qq.com            (dig后加域名,他可以返回2个

接口测试——HttpClient工具的https请求、代理设置、请求头设置、获取状态码和响应头

转自:https://www.cnblogs.com/hong-fithing/p/7617855.html https请求 https协议(Secure Hypertext Transfer Protocol) : 安全超文本传输协议, HTTPS以保密为目标研发, 简单讲HTTPS协议是由SSL+HTTP协议构建的可进行加密传输. 身份认证的网络协议, 其安全基础是SSL协议, 因此加密的详细内容请看SSL. 全称Hypertext Transfer Protocol overSecure

前段时间碰到的一些问题(免费WiFi设置+fiddler对手机进行抓包+fiddler抓不到https的请求)

这段时间转入移动端测试,对这块比较陌生,工作开展起来比较困难,所以好多东西都只是以解决问题为第一目标,没有去细细推敲其中原理,可能会有些语无伦次之感,但还是记一下当时解决问题的大致思路,供以后参考. 1. 免费wifi配置: 免费wifi使用时需要配置驱动.图文教程详见https://sec.corp.qihoo.net/APapply/wifi/ 首先下载随身wifi的官方安装程序 http://down.360safe.com/360ap/360freeap_whole_setup_5.3.

nginx配置ssl加密(单双向认证、部分https)

默认nginx是没有安装ssl模块的,需要编译安装nginx时加入--with-http_ssl_module选项. 关于SSL/TLS原理请参考这里,如果你只是想测试或者自签发ssl证书,参考 这里 . 提示:nignx到后端服务器由于一般是内网,所以不加密. 1. 全站SSL 全站做ssl是最常见的一个使用场景,默认端口443,而且一般是单向认证. server { listen 443; server_name example.com; root /apps/www; index inde

Qt发送HTTP请求

http://hi.baidu.com/cmdmac/item/c45b9f0fb0d0938802ce1bbd 最近在搞QT跟服务器交互的东西,自然少不了发送和接受HTTP请求.在网上找了一些资料知道以前的QT版本是使用QHTTP类来处理HTTP请求的,新版本是使用QNetworkAccessManager来进行管理的. HTTP请求在QT中相应的类为QNetworkRequest,HTTP响应相应的类为QNetworkReply,下面是一个管理的发送HTTP请求并读取响应的例子://Test

1.2. (复习)HTTP/HTTPS的请求与响应

HTTP和HTTPS HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法. HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入SSL层. SSL(Secure Sockets Layer 安全套接层)主要用于Web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全. HTTP的端口号

HTTPS的请求与响应

HTTP和HTTPS HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法. HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入SSL层. SSL(Secure Sockets Layer 安全套接层)主要用于Web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全. HTTP的端口号

[转帖]nginx配置ssl加密(单/双向认证、部分https)

nginx配置ssl加密(单/双向认证.部分https) https://segmentfault.com/a/1190000002866627 nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始采用的是全站加密,所有访问http:80的请求强制转换(rewrite)到https,后来自动化测试结果说响应速度太慢,https比http慢慢30倍,心想怎么可能,鬼知道他们怎么测的.所以就试了一下部分页面h

https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL

转自:https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL 因为项目中要用到TLS + SASL 来做安全认证层. 所以看了一些网上的资料, 这里做一个总结. 1. 首先推荐几个文章: 数字证书: http://www.cnblogs.com/hyddd/archive/2009/01/07/1371292.html 数字证书和SSL: http://www.2cto.com/Article/201203/121534.html 数字签名: http://www.