Qt http post方法

Qt http post方法

注意一:发送Json格式时,需要设置setHeader(QNetworkRequest::ContentTypeHeader, "application/json")
注意二:post请求发送之后需要增加QEventLoop

httpRequest.pro

pro文件中添加Qt+=network

httprequest.h

#ifndef HTTPREQUEST_H
#define HTTPREQUEST_H

#include <QDialog>
#include <QNetworkReply>

QT_BEGIN_NAMESPACE
namespace Ui
{
class HttpRequest;
}
QT_END_NAMESPACE

class HttpRequest : public QDialog
{
    Q_OBJECT

public:
    HttpRequest( QWidget *parent = nullptr );

    ~HttpRequest();
public slots:
    QString recvPost( QNetworkReply *reply );

private:
    QString mRequestHeader = "http://192.168.3.159:8083//user/login";  // ip+port+url
    QString mFullRequest;                                                             //访问URL
    Ui::HttpRequest *ui;
private:
    void postRequest( QString key, QString data );
};
#endif  // HTTPREQUEST_H

httprequest.cpp

#include "httprequest.h"
#include "ui_httprequest.h"
#include <QDebug>
#include <QEventLoop>
#include <QJsonDocument>
#include <QJsonObject>
#include <QNetworkAccessManager>
#include <QNetworkRequest>

HttpRequest::HttpRequest( QWidget *parent )
    : QDialog( parent )
    , ui( new Ui::HttpRequest )
{
    ui->setupUi( this );
    mFullRequest = mRequestHeader;
    postRequest( "admin", "admin" );
}

HttpRequest::~HttpRequest()
{
    delete ui;
}

QString HttpRequest::recvPost( QNetworkReply *reply )
{
    QByteArray array = reply->readAll();
    QJsonParseError jsonError;
    QJsonDocument jsonDoc( QJsonDocument::fromJson( array, &jsonError ) );
    if ( jsonError.error != QJsonParseError::NoError ) {
        return 0;
    }
    QJsonObject obj = jsonDoc.object();
    qDebug() << obj;
    // ui->textEdit->setHtml( array );
    return QString( array );
}

void HttpRequest::postRequest( QString key, QString data )
{
    //传入josn
    QJsonObject jsondata;
    jsondata.insert( "user_id", key );
    jsondata.insert( "user_password", data );
    QJsonDocument document;
    document.setObject( jsondata );
    QByteArray array = document.toJson( QJsonDocument::Compact );

    QNetworkRequest requestPost;                                                      // Post请求URL
    **requestPost.setHeader( QNetworkRequest::ContentTypeHeader, "application/json" );  //发送Json格式**

    QNetworkAccessManager *manager = new QNetworkAccessManager( this );  // get,post请求
    connect( manager, &QNetworkAccessManager::finished, this, &HttpRequest::recvPost );
    requestPost.setUrl( QUrl( mFullRequest ) );

    QNetworkReply *reply = manager->post( requestPost, array );
    QEventLoop loop;
    **connect( reply, &QNetworkReply::finished, &loop, &QEventLoop::quit );**
    loop.exec();
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值