实用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解析的实用的更多相关文章

  1. 自定义Json解析工具

    此博客为博主原创文章,转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10689536.html fastjson是很好用的json解析工具,只可惜项目中要 ...

  2. C# Newtonsoft.Json解析数组的小例子[转]

    https://blog.csdn.net/Sayesan/article/details/79756738 C# Newtonsoft.Json解析数组的小例子  http://www.cnblog ...

  3. Flutter网络请求与JSON解析

    本文介绍如何在Flutter中创建HTTP网络请求和对请求的json string进行类型解析. 网络请求 官方使用的是用dart io中的HttpClient发起的请求,但HttpClient本身功 ...

  4. C++的Json解析库:jsoncpp和boost(转)

    原文转自 http://blog.csdn.net/hzyong_c/article/details/7163589 JSON(JavaScript Object Notation)跟xml一样也是一 ...

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

    转自:http://www.open-open.com/lib/view/open1381566882614.html 一.简介  org.json是Java常用的Json解析工具,主要提供JSONO ...

  6. Java:JSON解析工具-org.json

    一.简介 org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下. 二.准备 1.在使用org.json之前,我们应该先从该网 ...

  7. dotnet 手动解决 json 解析中不合法字符串

    如果使用 Newtonsoft Json 解析字符串,字符串里面有不清真的格式,那么默认的解析将会炸掉.如果想要自己解决字符串中的不清真格式,可以使用传入 JsonSerializerSettings ...

  8. Windows下Nginx配置SSL实现Https访问(包含证书生成)

    Vincent.李   Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https ...

  9. Json解析工具的选择

    前言 前段时间@寒江不钓同学针对国内Top500和Google Play Top200 Android应用做了全面的分析(具体分析报告见文末的参考资料),其中有涉及到对主流应用使用json框架Gson ...

随机推荐

  1. QQ 聊天机器人API

    QQ机器人是腾讯陆续推出的的人工智能聊天机器人的总称. 都说小Q妹妹聪明好学,我们能够教她说话.也能够请他帮忙查询邮编.手机号,或者解释成语.翻译成语,据说她还会查询手机号码归属地.应用科学计算器. ...

  2. tensorflow 卷积层

    TensorFlow 卷积层   让我们看下如何在 TensorFlow 里面实现 CNN. TensorFlow 提供了 tf.nn.conv2d() 和 tf.nn.bias_add() 函数来创 ...

  3. git init之后,没有.git后缀的文件

    git init之后,打开相关目录没有.git后缀的文件 尝试

  4. Linux查看用户及其权限管理

    https://www.cnblogs.com/fxlttkl/p/7601224.html 查看用户 请打开终端,输入命令: $ who am i 或者 $ who mom likes 输出的第一列 ...

  5. H3C PAP验证配置示例

  6. NGINX比Apache的性能高是因为NGINX由C语言开发,而Apache由C++开发

    事实上,NGINX比Apache的性能高是因为NGINX由C语言开发,而Apache由C++开发.因此,NGINX效率大概是Apache的10倍左右

  7. 如何解决vue项目中 scss 不支持 scoped 的 /deep/ 穿透写法

    如何解决vue项目中 scss 不支持 scoped 的 /deep/ 穿透写法 用过vue的人估计都用过scoped样式属性,但有时候需要穿透样式,啥办? 很多资料都说用>>> 或 ...

  8. P1102 走迷宫二

    题目描述 大魔王抓住了爱丽丝,将她丢进了一口枯井中,并堵住了井口. 爱丽丝在井底发现了一张地图,他发现他现在身处一个迷宫当中,从地图中可以发现,迷宫是一个N*M的矩形,爱丽丝身处迷宫的左上角,唯一的出 ...

  9. java Class中得到构造方法Constructor、方法Method、字段Field

    常用方法: Constructor类用于描述类中的构造方法: Constructor<T> getConstructor(Class<?>... parameterTypes) ...

  10. http请求头包括了哪些常见内容

    Host: www.study.com                // 请求的地址域名和端口,不包括协议 Connection: keep-alive    // 连接类型,持续连接 Upgrad ...