Qt5 http/HTTPS访问 以及JSON解析的实用

实用QT5访问HTTP/以及HTTPS协议访问

并且调用Json解析

  1 #include "mywidget.h"
  2 #include "ui_mywidget.h"
  3 #include <QUrl>
  4 #include <QDebug>
  5 #include <QByteArray>
  6 #include <QSslConfiguration>
  7 #include <QJsonDocument>
  8 #include <QJsonParseError>
  9 #include <QJsonObject>
 10 #include <QJsonValue>
 11 MyWidget::MyWidget(QWidget *parent) :
 12     QWidget(parent),
 13     ui(new Ui::MyWidget)
 14 {
 15     ui->setupUi(this);
 16     QUrl url;
 17     m_AccessManager = new QNetworkAccessManager(this);
 18     url.setUrl("http://ip.taobao.com/service/getIpInfo2.php");
 19     QSslConfiguration config;
 20     config.setPeerVerifyMode(QSslSocket::VerifyNone);
 21     config.setProtocol(QSsl::TlsV1SslV3);
 22     m_Request.setSslConfiguration(config);
 23     m_Request.setUrl(url);
 24     QByteArray sendData;
 25     sendData = QString::fromStdString("ip=27.106.204.0").toLocal8Bit();
 26     m_Request.setRawHeader("Accept","*/*");
 27     m_Request.setRawHeader("Accept-Language","zh-CN,zh;q=0.9");
 28     m_Request.setRawHeader("Content-Type","application/x-www-form-urlencoded");
 29     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");
 30     m_Request.setRawHeader("X-Requested-With:","XMLHttpRequest");
 31     m_Request.setRawHeader("Referer","http://ip.taobao.com/ipSearch.html");
 32     m_Reply = m_AccessManager->post(m_Request,sendData);
 33
 34     connect(m_AccessManager,&QNetworkAccessManager::finished,this,&MyWidget::ReplyReadFunc);
 35
 36 }
 37
 38 MyWidget::~MyWidget()
 39 {
 40     delete ui;
 41 }
 42 void MyWidget::ReplyReadFunc(QNetworkReply* Reply)
 43 {
 44     int NetworkErrors = -1;
 45     NetworkErrors = Reply->error();
 46     QString ip;
 47     QString country;
 48     QString region;
 49     QString isp;
 50
 51     if(NetworkErrors ==QNetworkReply::NoError)
 52     {
 53         QByteArray databuff = Reply->readAll();
 54         QString result = QString::fromStdString(databuff.toStdString()).toUtf8();
 55         QJsonDocument document;
 56         QJsonParseError ParseError;
 57         document =QJsonDocument::fromJson(result.toUtf8(),&ParseError);
 58         if(!document.isNull() && ParseError.error == QJsonParseError::NoError)
 59         {
 60             if(document.isObject())
 61             {
 62                 QJsonObject Object = document.object(); //获取文档对象
 63                 if(!Object.isEmpty())
 64                 {
 65
 66                     if(Object.contains("data")) //先判断有没有
 67                     {
 68                         QJsonValue dataObj = Object.value("data");
 69                         if(dataObj.isObject())  //判断是否是对象
 70                         {
 71                             QJsonObject ObjectData = dataObj.toObject();
 72                             if(ObjectData.contains("ip"))
 73                             {
 74                                 QJsonValue ipVal = ObjectData.value("ip");
 75                                 if(ipVal.isString())
 76                                 {
 77                                     ip = ipVal.toString();
 78                                 }
 79                             }
 80                             if(ObjectData.contains("region"))
 81                             {
 82                                 QJsonValue regionVal = ObjectData.value("region");
 83                                 if(regionVal.isString())
 84                                 {
 85                                     region = regionVal.toString();
 86                                 }
 87                             }
 88                             if(ObjectData.contains("isp"))
 89                             {
 90                                 QJsonValue ispVal = ObjectData.value("isp");
 91                                 if(ispVal.isString())
 92                                 {
 93                                     isp = ispVal.toString();
 94                                 }
 95                             }
 96                         }
 97                     }
 98                 }
 99             }
100             country+="您的ip:"+ip;
101             country+="所在城市:"+region;
102             country+="运营商:"+isp;
103
104             qDebug()<<country.toStdString().c_str();
105         }
106     }
107 }

运行结果

原文地址:https://www.cnblogs.com/guolongzheng/p/9122836.html

时间: 2024-10-30 08:07:08

Qt5 http/HTTPS访问 以及JSON解析的实用的相关文章

Java基础知识强化103:JSON解析框架汇总

1.Gson Gson是Google提供的一个能够将Java对象转换成相应JSON表达形式的一个开源Java类库,当然用Gson也能将JSON字符串转换成与之等价的Java对象.Gson对于任何Java对象都有效,包括那些预先存在没有源代码的对象. 现在已经有一些能将Java对象转换成JSON的开源项目了.但是大多数项目都要求你在类文件中加入Java注解,而当你无法改动源代码的时候这是无法做到的.并且它们也不支持Java泛型.但是Gson却将这两点作为自己非常重要的设计目标. 目标 使用toJs

Java:JSON解析工具-org.json

一.简介 org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下. 二.准备 1.在使用org.json之前,我们应该先从该网址https://github.com/douglascrockford/JSON-java下载org.json源码,并将源码其加入到Eclipse中,即可调用. 2.查看相关的API文档,访问:https://github.com/douglascrockford/JSON-java. https

JSON解析工具-org.json使用教程

原文地址:http://www.open-open.com/lib/view/open1381566882614.html 一.简介 org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下. 二.准备 1.在使用org.json之前,我们应该先从该网址https://github.com/douglascrockford/JSON-java下载org.json源码,并将源码其加入到Eclipse中,即可调用. 2.查看相关

Javascript中的Array(数组) 、{}(映射) 与JSON解析

做网页总会使用javascript,使用javascript总会使用JSON.最近用到一下,就写写. 下面是总结: 1.将javascript中的Array和{}转化为json字符串可以使用json2.js,源码地址https://github.com/douglascrockford/JSON-js. 2.将json字符串转为javascript对象,可以使用javascript自带的eval函数. 3.javascript中可以使用typeof查看变量的类型. 4.要访问json字段,必须是

&lt;JavaScript语言精粹&gt;JSON解析器源码阅读

1 // 这是一个用JavaScript编写JSON解析器的实现方案: 2 var jsonParser = (function() { 3 // 这是一个能把JSON文本解析成JavaScript数据结构的函数. 4 // 它是一个简单的递归降序解析器. 5 // 我们在另一个函数中定义此函数,以避免创建全局变量. 6 7 var at, // 当前字符索引 8 ch, // 当前字符 9 escapee = { 10 '"': '"', 11 "\\": &qu

.Net Core下一次针对dpz2.Json和Newtonsoft.Json解析库的简单测试

关于dpz2.Json dpz2.Json是大胖子软件的自研Json解析库. 应用于更加简单的使用场景 在dpz2.Json诞生之前,我们一直使用的是Newtonsoft.Json解析库,Newtonsoft.Json最方便的地方是采用了类似JavaBean的绑定方式进行操作,但是实际操作时,我们可能更多时候只想要个解析器,好让我们能快速的辨别数据,这个时候,单纯的JavaBean方式又变得比较肘制,读取数据使用C#的动态类型确实可以比较方便的进行操作. 专注于直接操作 另外一个促使我们自研一个

Go的json解析:Marshal与Unmarshal

简介Json(Javascript Object Nanotation)是一种数据交换格式,常用于前后端数据传输.任意一端将数据转换成json 字符串,另一端再将该字符串解析成相应的数据结构,如string类型,strcut对象等. go语言本身为我们提供了json的工具包”encoding/json”.更多的使用方式,可以参考:https://studygolang.com/articles/6742 实现Json Marshal:将数据编码成json字符串看一个简单的例子 type Stu

面试题|手写JSON解析器

这周的 Cassidoo 的每周简讯有这么一个面试题:: 写一个函数,这个函数接收一个正确的 JSON 字符串并将其转化为一个对象(或字典,映射等,这取决于你选择的语言).示例输入: fakeParseJSON('{ "data": { "fish": "cake", "array": [1,2,3], "children": [ { "something": "else&qu

使用HttpClient+Json解析器爬取数据并存入数据库

一.题目要求 说明:这里我只展示爬取数据的代码,将可视化结果与统计数据结合,实时显示当前最新数据只需将这篇博客代码和我那篇使用Echarts可视化数据库数据结合即可 二.思路 同学思路:我的大部分同学思路是使用HttpClient+Jsoup获取并解析目标页面的数据,然后调用Dao层中的方法将数据筛选并存入数据库中 我的思路:我直接使用了一个网上的一个最新疫情数据Json的目标网页,然后使用HttpClient获取该Json格式数据,然后使用Json解析器将 数据分离,然后调用Dao层中的方法将