Qt网络编程post请求,数据格式为json或x-www-form-urlencoded

目录

Qt网络编程post请求,数据格式为json或x-www-form-urlencoded

一、.H文件

1、.h头文件

2、.h主代码

二、.CPP文件

1、主代码

 三、响应信息 返回结果(Josn数据格式输出)

四、Post数据格式参数及数据类型定义

1、Post:application/x-www-form-urlencoded数据类型格式

2、Post:application/json数据类型格式

五、测试请求模拟接口网站

Qt网络编程post请求,数据格式为json或x-www-form-urlencoded

一、.H文件

1、.h头文件

#include<QtNetwork/QNetworkRequest>
#include<QtNetwork/QNetworkReply>
#include<QtNetwork/QNetworkAccessManager>

2、.h主代码

private:
     QNetworkAccessManager * network_manager;

private slots:
    void post();
    void postBack(QNetworkReply* reply);

二、.CPP文件

1、主代码

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    network_manager= new QNetworkAccessManager(this);
    connect(network_manager,&QNetworkAccessManager::finished,this,&Widget::postBack);//通信完成后,自动调用getBack 方法
    post(); //执行Post请求
}


void Widget::post()
{
    //Post请求参数方法
    QByteArray dataArray;
    dataArray.append("INT_NAME=APIInfo&");
    dataArray.append("REQ_TIME=2008-9-4 12:19:14&");
    dataArray.append("REQ_ID=200894121914&");
    dataArray.append("AUTH_ID=123456&");
    dataArray.append("PARAM={\"ID\":\"1114444\",\"Code\":\"code1112222\",\"Name\":\"名称\",\"Flag\":\"1\",\"RequestTime\":\"2021-07-10 11:34:54\"}&");
    dataArray.append("DATA_DIGEST=244cc13014bd0c703a55bf0d8a71e100");


    //构造请求
    QNetworkRequest request;
    request.setUrl(QUrl("http://127.0.0.1:15738/WebService.asmx/APIInfo")); //请求地址
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");

    //发送请求
    network_manager->post(request, dataArray);
}


void Widget::postBack(QNetworkReply* reply)
{
    //qDebug()<<reply->readAll().data(); //输出所有响应内容

    // 获取响应信息
    QByteArray bytes = reply->readAll();

    QJsonParseError jsonError;
    QJsonDocument doucment = QJsonDocument::fromJson(bytes, &jsonError);
    if (jsonError.error != QJsonParseError::NoError) {
        qDebug() << QStringLiteral("解析Json失败");
        return;
    }

    // 解析Json
    if (doucment.isObject())
    {
        QJsonObject obj = doucment.object();
        QJsonValue value;
        if (obj.contains("data"))
        {
            value = obj.take("data");
            if (value.isString())
            {
                QString data = value.toString();
                qDebug() << data;
            }
        }
     }

}

 三、响应信息 返回结果(Josn数据格式输出)

{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "AUTH_ID": "123456", 
    "DATA_DIGEST": "244cc13014bd0c703a55bf0d8a71e100", 
    "INT_NAME": "APIInfo", 
    "PARAM": "{\"ID\":\"1114444\",\"Code\":\"code1112222\",\"Name\":\"\u540d\u79f0\",\"Flag\":\"1\",\"RequestTime\":\"2021-07-10 11:34:54\"}", 
    "REQ_ID": "200894121914", 
    "REQ_TIME": "2008-9-4 12:19:14"
  }, 
  "headers": {
    "Accept-Encoding": "gzip, deflate", 
    "Accept-Language": "zh-CN,en,*", 
    "Content-Length": "329", 
    "Content-Type": "application/x-www-form-urlencoded", 
    "Host": "httpbin.org", 
    "User-Agent": "Mozilla/5.0", 
    "X-Amzn-Trace-Id": "Root=1-634cbd2d-5a6d5114396528ad56f5a558"
  }, 
  "json": null, 
  "origin": "153.140.13.18", 
  "url": "http://httpbin.org/post"
}

四、Post数据格式参数及数据类型定义

1、Post:application/x-www-form-urlencoded数据类型格式

    //表单数据提交
    QByteArray dataArray;
    dataArray.append("INT_NAME=APIInfo&");
    dataArray.append("REQ_TIME=2008-9-4 12:19:14&");
    dataArray.append("REQ_ID=200894121914&");
    dataArray.append("AUTH_ID=123456&");
    dataArray.append("PARAM={\"ID\":\"1114444\",\"Code\":\"code1112222\",\"Name\":\"名称\",\"Flag\":\"1\",\"RequestTime\":\"2021-07-10 11:34:54\"}&");
    dataArray.append("DATA_DIGEST=244cc13014bd0c703a55bf0d8a71e100");


    //构造请求
    QNetworkRequest request;
    request.setUrl(QUrl("http://127.0.0.1:15738/WebService.asmx/APIInfo")); //请求地址
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");

2、Post:application/json数据类型格式

    // Json数据提交
    QJsonObject json;
    json.insert("INT_NAME", "APIInfo");
    json.insert("REQ_TIME", "2008-9-4 12:19:14");
    json.insert("REQ_ID", "200894121914");
    json.insert("AUTH_ID", "123456");
    json.insert("PARAM", "{\"ID\":\"1114444\",\"Code\":\"code1112222\",\"Name\":\"名称\",\"Flag\":\"1\",\"RequestTime\":\"2021-07-10 11:34:54\"}");
    json.insert("DATA_DIGEST", "244cc13014bd0c703a55bf0d8a71e100");


    QJsonDocument document;
    document.setObject(json);
    QByteArray dataArray = document.toJson(QJsonDocument::Compact);


    //构造请求
    QNetworkRequest request;
    request.setUrl(QUrl("http://127.0.0.1:15738/WebService.asmx/APIInfo")); //请求地址
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");

五、测试请求模拟接口网站

 /*httpbin.org 这个网站能测试 HTTP 请求和响应的各种信息,比如 cookie、ip、headers 和登录验证等,且支持 GET、POST 等多种方法,对 web 开发和测试很有帮助。*/
  request.setUrl(QUrl("http://httpbin.org/post"));

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
接口请求格式x-www-form-urlencoded、formjson的区别在于数据的传输方式和格式。 x-www-form-urlencoded是一种常见的数据传输方式,适用于传输简单的键值对数据。在这种格式下,数据会被转换成URL编码的字符串,然后作为请求体的一部分发送给后端。例如,'name=edward&age=25'。 form格式也是一种常见的数据传输方式,适用于传输表单数据。在这种格式下,数据会被封装成一个表单对象,然后作为请求体的一部分发送给后端。这种格式通常用于上传文件,需要设置编码格式为multipart/form-data。例如,通过表单提交文件时,会将文件数据封装成一个表单对象,然后发送给后端。 json格式是一种常见的数据传输格式,适用于传输复杂的结构化数据。在这种格式下,数据会被转换成JSON字符串,然后作为请求体的一部分发送给后端。后端需要设置请求头的content-type为application/json来指定接收JSON格式的数据。例如,{ 'name':'edward', 'age':'25' }。 总结来说,x-www-form-urlencoded适用于简单的键值对数据,form适用于传输表单数据和上传文件,json适用于传输复杂的结构化数据。具体使用哪种格式取决于后端接口的要求和数据的结构。 #### 引用[.reference_title] - *1* *2* [axios中post请求 json 和 application/x-www-form-urlencoded 使用](https://blog.csdn.net/MuHao_Hearbeat/article/details/124040998)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Post请求的3种编码格式:application/x-www-form-urlencoded和multipart/form-data和application/json](https://blog.csdn.net/u013258447/article/details/101107743)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TryRestart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值