Qt Demo Http 解析网址 Openssl
来源:互联网 发布:图的深度优先遍历算法 编辑:程序博客网 时间:2024/06/01 10:48
今天练习了一下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 guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgets networkTARGET = http_ProjectTEMPLATE = appSOURCES += main.cpp\ widget.cppHEADERS += widget.hFORMS += widget.uiRC_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_OBJECTpublic: 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);}
1 0
- Qt Demo Http 解析网址 Openssl
- qt 优秀开源demo网址
- QT 对网址的解析和组合
- Qt的http下载的Demo
- openssl下载网址
- QT 网址
- 大神博客libnids和pop3以及http协议解析网址
- 网址解析
- 网址解析
- QT Demo
- 各种Demo下载网址
- plupload 参考网址 http://chaping.github.io/plupload/demo/index.html
- Python发送http请求解析返回json小demo
- QT openssl ARM 编译
- QT SSL OpenSSL https
- Qt之OpenSSL
- Qt使用OpenSSL
- openssl中dh算法Demo
- [Unity]关于Unity5.5以及5.4.x中的UGUI在安卓中出现Image不显示的BUG的解决办法
- Hibernate的条件查询的几种方式
- oracle trim方法
- Java学习交流群479353812,欢迎你的加入,一起讨论,一起进步,技术分享,资源分享!
- MQTT paho客户端使用
- Qt Demo Http 解析网址 Openssl
- HDU 2037
- 经典计算机书籍书单整理
- table表头行不动
- android_09_sd卡可用空间大小
- android 实现点击屏幕其他地方popupwindow消失
- switch语句
- guava-retrying重试工具库: Retryer.call()使用注意事项
- 安装Linux版的Notepad++