zoukankan      html  css  js  c++  java
  • qt 网络库使用介绍

    qt 网络库使用介绍

    在.pro文件中,要手动添加network模块:QT += network

    有三个核心类,

    • QNetworkAccessManager: 发送get或者post请求。

      用get方法或者post方法发送get/post请求

      参数是QNetworkRequest,返回值是QNetworkReply

    • QNetworkRequest:包装请求信息

      用setHeader方法设置请求的header

      用setUrl方法设置服务器的IP和端口

    • QNetworkReply:包装接服务器返回的信息。

      注意,用rep->readAll();得到返回的数据;用rep->readAll(key);得到返回的header信息

    一个小例子,给百度发一个get请求。

    注意事项:

    1,设置http请求头UserAgent,目的是伪装成浏览器的发送的http请求。

    2,调用get方法后,在等待服务器的返回的过程中,get方法或者post方法是不阻塞的,调用后立即返回。

    3,因为get/post方法不阻塞,那怎么才能知道服务器什么时候处理完,返回给客户端呢,监听QNetworkReply里的&QNetworkReply::readyRead信号。

    4,qDebug() << 2222;会先于qDebug() << data;被打印出来。原因是get方法不阻塞。

    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        QNetworkAccessManager* mgr = new QNetworkAccessManager(this);
    
        QString agent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36";
        QNetworkRequest res;
        //设置http请求头UserAgent,目的是伪装成浏览器的发送的http请求
        res.setHeader(QNetworkRequest::UserAgentHeader, agent);
        //设置URL
        //res.setUrl(QUrl("http://www.baidu.com:80"));
        res.setUrl(QUrl("http://10.210.65.129:80"));
    
        //发送http请求,返回的结果放到rep里。
        //QNetworkReply* rep = mgr->post(res, "");
        QNetworkReply* rep = mgr->get(res);
    
        //读服务器返回的数据
        connect(rep, &QNetworkReply::readyRead, this, [=](){
    
            //取得服务器回发的header数据
            QVariant url =  rep->header(QNetworkRequest::LocationHeader);
            //服务器回发的数据,但不包括头,头的信息在header里。
            QByteArray data = rep->readAll();
            qDebug() << data;
            qDebug() << url.toString();
        });
    
        qDebug() << 2222;
    }
    

    c/c++ 学习互助QQ群:877684253

    本人微信:xiaoshitou5854

  • 相关阅读:
    安卓测试工具uiautomator无法打开失败报错解决方案
    python2 与 python3的区别
    linux下自动获取并安装软件包 apt-get 的命令介绍
    安全测试常用几个工具
    常用安全测试工具
    实时爬取上海快3的结果
    性能测试监控工具nmon安装及使用方法
    locust性能测试框架随笔
    adb常用命令
    App性能测试
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/11499101.html
Copyright © 2011-2022 走看看