Qt5 http/HTTPS访问 以及JSON解析的实用
2024-09-07 05:49:49
实用QT5访问HTTP/以及HTTPS协议访问
并且调用Json解析
#include "mywidget.h"
#include "ui_mywidget.h"
#include <QUrl>
#include <QDebug>
#include <QByteArray>
#include <QSslConfiguration>
#include <QJsonDocument>
#include <QJsonParseError>
#include <QJsonObject>
#include <QJsonValue>
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyWidget)
{
ui->setupUi(this);
QUrl url;
m_AccessManager = new QNetworkAccessManager(this);
url.setUrl("http://ip.taobao.com/service/getIpInfo2.php");
QSslConfiguration config;
config.setPeerVerifyMode(QSslSocket::VerifyNone);
config.setProtocol(QSsl::TlsV1SslV3);
m_Request.setSslConfiguration(config);
m_Request.setUrl(url);
QByteArray sendData;
sendData = QString::fromStdString("ip=27.106.204.0").toLocal8Bit();
m_Request.setRawHeader("Accept","*/*");
m_Request.setRawHeader("Accept-Language","zh-CN,zh;q=0.9");
m_Request.setRawHeader("Content-Type","application/x-www-form-urlencoded");
m_Request.setRawHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36");
m_Request.setRawHeader("X-Requested-With:","XMLHttpRequest");
m_Request.setRawHeader("Referer","http://ip.taobao.com/ipSearch.html");
m_Reply = m_AccessManager->post(m_Request,sendData); connect(m_AccessManager,&QNetworkAccessManager::finished,this,&MyWidget::ReplyReadFunc); } MyWidget::~MyWidget()
{
delete ui;
}
void MyWidget::ReplyReadFunc(QNetworkReply* Reply)
{
int NetworkErrors = -;
NetworkErrors = Reply->error();
QString ip;
QString country;
QString region;
QString isp; if(NetworkErrors ==QNetworkReply::NoError)
{
QByteArray databuff = Reply->readAll();
QString result = QString::fromStdString(databuff.toStdString()).toUtf8();
QJsonDocument document;
QJsonParseError ParseError;
document =QJsonDocument::fromJson(result.toUtf8(),&ParseError);
if(!document.isNull() && ParseError.error == QJsonParseError::NoError)
{
if(document.isObject())
{
QJsonObject Object = document.object(); //获取文档对象
if(!Object.isEmpty())
{ if(Object.contains("data")) //先判断有没有
{
QJsonValue dataObj = Object.value("data");
if(dataObj.isObject()) //判断是否是对象
{
QJsonObject ObjectData = dataObj.toObject();
if(ObjectData.contains("ip"))
{
QJsonValue ipVal = ObjectData.value("ip");
if(ipVal.isString())
{
ip = ipVal.toString();
}
}
if(ObjectData.contains("region"))
{
QJsonValue regionVal = ObjectData.value("region");
if(regionVal.isString())
{
region = regionVal.toString();
}
}
if(ObjectData.contains("isp"))
{
QJsonValue ispVal = ObjectData.value("isp");
if(ispVal.isString())
{
isp = ispVal.toString();
}
}
}
}
}
}
country+="您的ip:"+ip;
country+="所在城市:"+region;
country+="运营商:"+isp; qDebug()<<country.toStdString().c_str();
}
}
}
运行结果
最新文章
- Spring 自带的定时任务
- delay(和setTimeout()的区别
- bzoj3731: Gty的超级妹子树
- gulp教程之gulp-minify-css
- Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法
- [pjsip]Pjlib中配置文件config.h解析
- 127 Word Ladder
- WPF跨程序集共享样式(跨程序集隔离样式和代码)
- 用lambda构建ORM查询语句
- IDEA14创建Maven管理的Java Web项目
- 新装docker 从本地仓库下载
- 求一个int型整数的两种递减数之和(华为2015笔试题及答案)
- Python脚本:获取股票信息
- RandomAccessFile实时读取大文件(转)
- Rappid 消除试用版的弹出框
- mybatis cloud not autowired
- hash函数补分博客
- Spring线程池
- vue 项目其他规范
- 2017/05/23 java 基础 随笔
热门文章
- Java练习 SDUT-3422_小金问呀问不会问题
- @topcoder - TCO19 Regional Wildcard Wildcard Round - D1L2@ Diophantine
- PDM->;OOM->;C#实体类生成时,对Blob类型字段的处理
- offsetheight 和clientheight、scrollheight、scrollTop区别
- @codechef - MGCH3D@ 3D Queries
- @codeforces - 1106F@ Lunar New Year and a Recursive Sequence
- CODE FESTIVAL 2017 qual B D 101 to 010(dp)
- 如何查看redis内存使用情况
- SuperSocket 中内置的 Flash/Silverlight 策略服务器
- Python3使用过程中需要注意的点