Qt Post get

QNetworkAccessManager来发送请求,QNetworkRequest 设置HTTP报文,QNetworkReply 接收请求结果

服务器端 PHP代码:

<?php 
//接收post参数‘a’ 并把它返回给客户端
$test = $_POST['a']; 
echo  $test;  
?>

post请求方式1:使用QNetworkAccessManager::finished信号接收结果

#include "qmlclass.h"
#include<QIODevice>
#include<QDebug>
#include<QNetworkReply>
QmlClass::QmlClass(QObject *parent) : QObject(parent)
{
    QByteArray  data;
    m_netManger = new QNetworkAccessManager(this);
    QNetworkRequest network_request;


    //设置发送的数据
    data.append("a=250");

    //设置头信息
    network_request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
    network_request.setHeader(QNetworkRequest::ContentLengthHeader, data.length());

    //设置url
    network_request.setUrl(QUrl("http://localhost/mycode/Test/index.php"));

    connect(m_netManger, &QNetworkAccessManager::finished, this, [=](QNetworkReply *reply) {

        QNetworkRequest  ss=reply->request();


        QByteArray t =reply->readAll(); 
        qDebug()<<"POST返回"<<t;

    });
    //发送请求
    QNetworkReply *reply2=m_netManger->post(network_request, data);
    connect(reply2,&QNetworkReply::readyRead,this,[=](){
        QByteArray t =reply2->readAll();
        qDebug()<<"POST返回"<<t;
    });

}


POST返回 "250"

post请求方式1有很大不足,若有多次post或者get,无法区分是哪个post或者get返回的结果,因为异步的原因,这变的很蛋疼,这时候还有一种方式,把信号用在QNetworkReply 中

QmlClass::QmlClass(QObject *parent) : QObject(parent)
{
    QByteArray  data;
    m_netManger = new QNetworkAccessManager(this);
    QNetworkRequest network_request;


    //设置发送的数据
    data.append("a=250");

    //设置头信息
    network_request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
    network_request.setHeader(QNetworkRequest::ContentLengthHeader, data.length());

    //设置url
    network_request.setUrl(QUrl("http://localhost/mycode/Test/index.php"));

//    connect(m_netManger, &QNetworkAccessManager::finished, this, [=](QNetworkReply *reply) {

//        QNetworkRequest  ss=reply->request();


//        QByteArray t =reply->readAll();
//        qDebug()<<"POST返回"<<reply<<","<<reply2<<ss.url();
//        qDebug()<<"POST返回"<<t;

//    });
    //发送请求
        //发送请求
    QNetworkReply *reply2=m_netManger->post(network_request, data);
    connect(reply2,&QNetworkReply::readyRead,this,[=](){
        QByteArray t =reply2->readAll();
        qDebug()<<"reply2 POST返回"<<t;
    });


    QNetworkReply *reply3=m_netManger->post(network_request, "a=5");
    connect(reply3,&QNetworkReply::readyRead,this,[=](){
        QByteArray t =reply3->readAll();
        qDebug()<<"reply3 POST返回"<<t;
    });
}
reply2 POST返回 "250"
reply3 POST返回 "5"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值