Qt Demo Http 解析网址 Openssl
今天练习了一下Qt 解析http协议,在Demo中使用到了Openssl
一上午的时间都是编译openssl,不过还是没有成功,很遗憾,这里整理了有关这个Demo的本件
网盘连接:见下方评论吧,长传太慢了
不过虽然没有编译通过openssl。不过也不影响使用,可以直接下载现成的openssl库进行开发,只需要安装,并且把文件拷贝值Qt目录的bin文件夹下面即可
下载地址:http://slproweb.com/products/Win32OpenSSL.html
剩下的就是按照网上的教程,一步一步的来编写代码
软件截图
详细代码
这里需要在工程文件中加入网络模块
pro工程文件
#-------------------------------------------------
#
# Project created by QtCreator 2016-12-27T09:16:58
#
#------------------------------------------------- QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets network TARGET = http_Project
TEMPLATE = app SOURCES += main.cpp\
widget.cpp HEADERS += widget.h FORMS += widget.ui RC_FILE = ./source/Logo/http_icon.rc
头文件
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QNetworkRequest>
#include <QTimer>
#include <QString>
#include <QByteArray>
#include <QTextCodec>
#include <QMessageBox>
#include <QUrl> namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
explicit Widget(QWidget *parent = 0);
~Widget(); bool sendRequest(const QString& strUrl); private slots:
void slot_requestFinished();
void slot_requestTimeout();
void on_pushButton_clicked(); signals:
void signal_requestFinished(bool bSuccess,const QString& strResult);
private:
Ui::Widget *ui; QString m_serUrl;
QNetworkAccessManager* m_pNetworkManager;
QNetworkReply* m_pNetworkReply;
QTimer* m_pTimer;
}; #endif // WIDGET_H
cpp文件
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
const int nHTTP_TIME = 10000; Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
setWindowTitle("Http Demo"); //set window title
ui->lineEdit_address->setToolTip("please input the address");
ui->lineEdit_address->setPlaceholderText("please input the address");
m_pNetworkManager = new QNetworkAccessManager(this);
m_pNetworkReply = NULL;
m_pTimer = new QTimer;
connect(m_pTimer,SIGNAL(timeout()),this,SLOT(slot_requestTimeout()));
} Widget::~Widget()
{
m_pTimer->stop();
delete ui;
} bool Widget::sendRequest(const QString &strUrl)
{
m_serUrl = strUrl;
QNetworkRequest netRequest;
netRequest.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-from-urlencoded");
netRequest.setUrl(QUrl(strUrl));
if(strUrl.toLower().startsWith("https"))
{
QSslConfiguration sslConfig;
sslConfig.setPeerVerifyMode(QSslSocket::VerifyNone);
sslConfig.setProtocol(QSsl::TlsV1_1);
netRequest.setSslConfiguration(sslConfig);
}
m_pNetworkReply = m_pNetworkManager->get(netRequest);
connect(m_pNetworkReply,SIGNAL(finished()),this,SLOT(slot_requestFinished()));
m_pTimer->start(nHTTP_TIME); qDebug()<<"sendRequest"; return true;
} void Widget::slot_requestFinished()
{
m_pTimer->stop();
QByteArray resultContent = m_pNetworkReply->readAll();
QTextCodec* pCodec = QTextCodec::codecForName("UTF-8");
QString strResult = pCodec->toUnicode(resultContent);
int nHttpCode = m_pNetworkReply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
qDebug()<<"mHttpCode"<<nHttpCode;
if(nHttpCode == 200)
{
ui->textEdit_result->setText(strResult);
emit signal_requestFinished(true,strResult);
}
else
{
emit signal_requestFinished(false,strResult);
}
m_pNetworkReply->deleteLater();
// this->deleteLater();
qDebug()<<"requestFinish";
} void Widget::slot_requestTimeout()
{
emit signal_requestFinished(false ,"timeout");
QMessageBox::warning(this,"Waring","Request False");
m_pNetworkReply->deleteLater();
// this->deleteLater();
} void Widget::on_pushButton_clicked()
{
QString str = ui->lineEdit_address->text().trimmed();
sendRequest(str);
}
Qt Demo Http 解析网址 Openssl的更多相关文章
- js解析网址获取需要的数据
		
/** * 获取地址栏内容,返回pathnamearrneed对象 * @param {Object} len 从第几位开始获取你需要的值 */ function myLocationId(len) ...
 - QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数
		
QT源码解析(一) QT创建窗口程序.消息循环和WinMain函数 分类: QT2009-10-28 13:33 17695人阅读 评论(13) 收藏 举报 qtapplicationwindowse ...
 - QT源码解析(七)Qt创建窗体的过程,作者“ tingsking18 ”(真正的创建QPushButton是在show()方法中,show()方法又调用了setVisible方法)
		
前言:分析Qt的代码也有一段时间了,以前在进行QT源码解析的时候总是使用ue,一个函数名在QTDIR/src目录下反复的查找,然后分析函数之间的调用关系,效率实在是太低了,最近总结出一个更简便的方法, ...
 - 虹软人脸识别——官方 Qt Demo 移植到 Linux
		
一.前言 最近需要在 Linux 平台下开发一个人脸识别相关的应用,用到了虹软的人脸识别 SDK.之前在 Windows 平台用过,感觉不错,SDK 里面还带了 Demo 可以快速看到效果.打开 Li ...
 - QT学习:c++解析html相关
		
原来我做爬虫的时候,对页面进行解析的时候总是用很简单粗暴的方法,直接找规律.后来在网上看到了gumbo,尝试了一下,发现确实很好用,所以向大家推荐一下. 以下转自:http://blog.csdn.n ...
 - qt和makefile学习网址
		
http://blog.51cto.com/zt/20/1/ ---qt学习网站 http://www.chinaunix.net/old_jh/23/408225.html [精华] 跟我一起 ...
 - QT源码解析笔记
		
1. QT如何绘制控件的 QT的绘制控件在QStyleSheetStyle::DrawControl里面,这里会调用默认的QSS来绘制效果 2. 在设置一次QSS以后,将会触发polish事件,里面将 ...
 - 绝对好用的浏览器json解析网址
		
你们是否经常在浏览器输入请求地址解析遇到中文乱码的情况,今天我找到了一个好用的浏览器解析json网址,绝对好用. 1.直接输入网址 http://pro.jsonlint.com/ 2.输入要解析的j ...
 - Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)
		
When compiling Qt you can choose one of these options based on the configure command line: no OpenSS ...
 
随机推荐
- 运行出现Server Tomcat v8.5 Server at localhost failed to start.和A child container failed during start
			
出现问题: 解决方法: 1.看servlet文件中的@WebServlet“()”,里面是否少了/字符,如图: 加上即可,有问题随时留言,欢迎您的咨询!
 - 【洛谷P2831】[NOIP2016]愤怒的小鸟
			
愤怒的小鸟 题目链接 本来是刷状压DP的,然而不会.. 搜索是比较好想的,直接dfs就行了 我们可以知道两只猪确定一条抛物线 依次处理每一只猪,有以下几种方法: 1.先看已经建立的抛物线是否能打到这只 ...
 - 【luogu P2385 青铜莲花池】 题解
			
题目链接:https://www.luogu.org/problemnew/show/P2385 莲花池什么的最漂亮啦! 最近刷了两天搜索= =我搜索一直是弱菜 直接套bfs #include < ...
 - 学大伟业 Day 6 培训总结
			
今天接着昨天的继续讲数据结构 今天先是 分块 在统计问题中,尤其是序列问题,经常涉及到区间的操作,比如修改一段区间的元素,询问某个区间的元素的信息. 如果每次都对一整个区间的每一个元素进行操作的话,那 ...
 - toad for sql server
			
数据库连接工具 toad for sql sever
 - 蓝牙实现对等网络连接 <GameKit/GameKit.h>
			
/* 1.设置UI界面 2.引入框架 3.点击选择照片 4.连接蓝牙设备 5.实现蓝牙的代理方法 6.发送照片 */ #import "ViewController.h" #imp ...
 - 新知识  HtMl 5
			
快要毕业了,即将走向实习岗位,但是这日子过的太无聊了,昨天逃课回宿舍打开电脑想看电影但是没什么好看的,于是上床睡觉了,越躺越无聊,然后爬了起来到学习图书馆找了本HTML5的课本,学习了起来(我感觉ht ...
 - js 判断两个时间相差的天数
			
judgeDay(sDate1, sDate2) { const sDate1 = `${new Date(sDate1).getFullYear()}-${new Date(sDate1).getM ...
 - dedecms添加/编辑文章如何把附加选项去掉默认勾选状态
			
1.去掉添加时默认勾选状态. 在 系统->系统基本参数->其它选项 中,如图中的三个选项选择否即可. 设置完后可以看到添加时已经默认不勾选,但是编辑文章时还是默认勾选状态. 2.去掉编辑时 ...
 - Asp.Net Core 生成图形验证码
			
前几天有朋友问我怎么生成图片验证码,话不多说直接上代码. 支持.NET CORE开源.助力.NET Core社区发展. using System; using System.IO; using Sys ...