实用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();
}
}
}

运行结果

最新文章

  1. Spring 自带的定时任务
  2. delay(和setTimeout()的区别
  3. bzoj3731: Gty的超级妹子树
  4. gulp教程之gulp-minify-css
  5. Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法
  6. [pjsip]Pjlib中配置文件config.h解析
  7. 127 Word Ladder
  8. WPF跨程序集共享样式(跨程序集隔离样式和代码)
  9. 用lambda构建ORM查询语句
  10. IDEA14创建Maven管理的Java Web项目
  11. 新装docker 从本地仓库下载
  12. 求一个int型整数的两种递减数之和(华为2015笔试题及答案)
  13. Python脚本:获取股票信息
  14. RandomAccessFile实时读取大文件(转)
  15. Rappid 消除试用版的弹出框
  16. mybatis cloud not autowired
  17. hash函数补分博客
  18. Spring线程池
  19. vue 项目其他规范
  20. 2017/05/23 java 基础 随笔

热门文章

  1. Java练习 SDUT-3422_小金问呀问不会问题
  2. @topcoder - TCO19 Regional Wildcard Wildcard Round - D1L2@ Diophantine
  3. PDM-&gt;OOM-&gt;C#实体类生成时,对Blob类型字段的处理
  4. offsetheight 和clientheight、scrollheight、scrollTop区别
  5. @codechef - MGCH3D@ 3D Queries
  6. @codeforces - 1106F@ Lunar New Year and a Recursive Sequence
  7. CODE FESTIVAL 2017 qual B D 101 to 010(dp)
  8. 如何查看redis内存使用情况
  9. SuperSocket 中内置的 Flash/Silverlight 策略服务器
  10. Python3使用过程中需要注意的点