zoukankan      html  css  js  c++  java
  • QT POST/GET 发送/获取网页数据

    #include <QNetworkReply>
    #include <QNetworkRequest>
    
    QNetworkAccessManager *m_accessManager;
    Widget::Widget(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::Widget)
    {
        ui->setupUi(this);
    
        m_accessManager = new QNetworkAccessManager(this);
        QObject::connect(m_accessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(finishedSlot(QNetworkReply*)));
    }
    
    Widget::~Widget()
    {
        delete ui;
    }
    
    void Widget::finishedSlot(QNetworkReply *reply)
    {
         if (reply->error() == QNetworkReply::NoError)
         {
             QByteArray bytes = reply->readAll();
             qDebug()<<bytes;
             QString string = QString::fromUtf8(bytes);
    
             ui->textBrowser->setText(string.toUtf8());
         }
         else
         {
             qDebug()<<"handle errors here";
             QVariant statusCodeV = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
             //statusCodeV是HTTP服务器的相应码,reply->error()是Qt定义的错误码,可以参考QT的文档
             qDebug( "found error ....code: %d %d
    ", statusCodeV.toInt(), (int)reply->error());
             qDebug(qPrintable(reply->errorString()));
         }
         reply->deleteLater();
    }
    
    void Widget::on_pushButton_clicked()
    {
    //POST
        QNetworkRequest *request = new QNetworkRequest();
    
        request->setUrl(QUrl("http://localhost:8888/login"));
    //    request->setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
    //    request->setRawHeader("Accept","text/html, application/xhtml+xml, */*");
    //    request->setRawHeader("Referer","http://localhost:8888/login");
    //    request->setRawHeader("Accept-Language","zh-CN");
    //    request->setRawHeader("X-Requested-With","XMLHttpRequest");
    //    request->setRawHeader("User-Agent","Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)");
    //    request->setRawHeader("Content-Type","application/x-www-form-urlencoded");
    //    request->setRawHeader("Accept-Encoding","gzip,deflate");
    //    request->setRawHeader("Host","localhost:8888");
    //    request->setRawHeader("Content-Length","18");
    //    request->setRawHeader("Connection","Keep-Alive");
    //    request->setRawHeader("Cache-Control","no-cache");
    
        QByteArray postData;
        postData.append("myname=lk&mypwd=33");
    
        QNetworkReply* reply = m_accessManager->post(*request,postData);
    }
    
    void Widget::on_pushButton_get_clicked()
    {
    //GET
    
    //    QUrl url("https://kyfw.12306.cn/otn/resources/js/framework/station_name.js");
    //    QUrl url("http://localhost:8888/login");
    //    QUrl url("http://dict.baidu.com/s?wd=name");
    
        QNetworkRequest *request = new QNetworkRequest();
        request->setUrl(QUrl("http://dict.baidu.com/s?wd=name"));
    
        m_accessManager->get(*request);
    }

    http://blog.csdn.net/liukang325/article/details/46915359

  • 相关阅读:
    【区块链整理】四、区块链数据结构
    【区块链整理】三、以太坊挖矿算法 ETHASH
    【区块链整理】二、比特币交易脚本
    【区块链整理】一、概念
    FISCO BCOS CRUD 功能和 CNS 合约命名服务杂记
    前台静态资源打包ios
    叹而立之年,忆往昔旧事
    基于Bootstrap table组件实现多层表头配置
    js或jQuery获取当前屏幕的各种高度
    echarts图表基础配置
  • 原文地址:https://www.cnblogs.com/findumars/p/6124359.html
Copyright © 2011-2022 走看看