Qt5 http/HTTPS访问 以及JSON解析的实用
实用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();
}
}
}
运行结果

Qt5 http/HTTPS访问 以及JSON解析的实用的更多相关文章
- 自定义Json解析工具
此博客为博主原创文章,转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10689536.html fastjson是很好用的json解析工具,只可惜项目中要 ...
- C# Newtonsoft.Json解析数组的小例子[转]
https://blog.csdn.net/Sayesan/article/details/79756738 C# Newtonsoft.Json解析数组的小例子 http://www.cnblog ...
- Flutter网络请求与JSON解析
本文介绍如何在Flutter中创建HTTP网络请求和对请求的json string进行类型解析. 网络请求 官方使用的是用dart io中的HttpClient发起的请求,但HttpClient本身功 ...
- C++的Json解析库:jsoncpp和boost(转)
原文转自 http://blog.csdn.net/hzyong_c/article/details/7163589 JSON(JavaScript Object Notation)跟xml一样也是一 ...
- JSON解析工具-org.json使用教程
转自:http://www.open-open.com/lib/view/open1381566882614.html 一.简介 org.json是Java常用的Json解析工具,主要提供JSONO ...
- Java:JSON解析工具-org.json
一.简介 org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下. 二.准备 1.在使用org.json之前,我们应该先从该网 ...
- dotnet 手动解决 json 解析中不合法字符串
如果使用 Newtonsoft Json 解析字符串,字符串里面有不清真的格式,那么默认的解析将会炸掉.如果想要自己解决字符串中的不清真格式,可以使用传入 JsonSerializerSettings ...
- Windows下Nginx配置SSL实现Https访问(包含证书生成)
Vincent.李 Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https ...
- Json解析工具的选择
前言 前段时间@寒江不钓同学针对国内Top500和Google Play Top200 Android应用做了全面的分析(具体分析报告见文末的参考资料),其中有涉及到对主流应用使用json框架Gson ...
随机推荐
- POJ-1125_Stockbroker Grapevine
Stockbroker Grapevine Time Limit: 1000MS Memory Limit: 10000K Description Stockbrokers are known to ...
- oracle函数 CHR(n1)
[功能]:将ASCII 码转换为字符. [参数]:n1,为0 ~ 255,整数 [返回]:字符型 [示例] SQL> select chr(54740) zhao,chr(65) chr65 f ...
- Spring读取配置文件,地址问题,绝对路径,相对路径
Spring在读取配置文件时,是相对于bin,或者WEB-INF的: “applicationContext.xml”就是找bin或WEB-INF及子文件夹下的文件: “/res/applicatio ...
- HDU - 6534 Chika and Friendly Pairs
这个题其实也是很简单的莫队,题目要求是给一个序列,询问l-r区间内部,找到有多少对答案满足 i < j 并且 | a[ i ] -a[ j ] | <=k 也就是有多少对,满足差值小于k的 ...
- adblock自定义规则
click.admaster.cn/* cm.baidu.com/* cm.pos.baidu.com/* cpro.baidu.com/* cpro.baidustatic.com/* dup.ba ...
- H3C 广域网的作用
- Ant design在vue,react的引入
文章地址: https://www.cnblogs.com/sandraryan/ 最近由于 一些不可描述的原因 要研究一下Ant design这个前端框架. 祭上官网: https://ant.de ...
- 【原生JS】写最简单的图片轮播
非常简单的一个大图轮播,通过将控制显示位置来进行轮播效果,写来给正在学习的新手朋友们参考交流. 先看效果:(实际效果没有这么快) 先看布局: <div id="display" ...
- Python基础知识汇总
1.执行脚本的两种方式 Python a.py 直接调用Python解释器执行文件 chomd +x a.py ./a.py #修改a.py文件的属性,为可执行,在用 ./ 执行 ...
- HOSt ip is not allowed to connect to this MySql server, MYSQL添加远程用户或允许远程访问三种方法
HOSt ip is not allowed to connect to this MySql server 报错:1130-host ... is not allowed to connect to ...