qt使用http发送一个图片

.pro中添加组件

QT += network
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <string.h>
#include <QDebug>
#include <QNetworkRequest>
#include <QNetworkAccessManager>
#include <QBuffer>


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);




    QNetworkAccessManager *m_pHttpMgr = new QNetworkAccessManager();

    QString url = "http://127.0.0.1:8081/api/PC_Login";
    QNetworkRequest requestInfo;
    requestInfo.setUrl(QUrl(url));
     requestInfo.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json"));


     QImage image("C://Users//\Administrator//Pictures//test.jpg");
      QByteArray ba;
       QBuffer buf(&ba);
       image.save(&buf, "jpg");
       QString qstr = "{\"name\":\"aaa\",\"password\":\"123456\", \"img\":\"" +  ba.toBase64() +  "\"}";
      buf.close();

    QByteArray qByteHttpData = qstr.toUtf8();
    QNetworkReply *reply=  m_pHttpMgr->post(requestInfo, qByteHttpData);


    QEventLoop eventLoop;
   connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
   eventLoop.exec();       //-----block until finish ------>


    if (reply->error() == QNetworkReply::NoError){
           qDebug() << "request protobufHttp NoError";
    }else{
         qDebug()<<"request protobufHttp handle errors here";
         QVariant statusCodeV = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
         qDebug( "request protobufHttp found error ....code: %d %d\n", statusCodeV.toInt(), (int)reply->error());
         qDebug(qPrintable(reply->errorString()));
    }

     QByteArray responseByte = reply->readAll();
     qDebug() << responseByte;


}






MainWindow::~MainWindow()
{

    delete ui;
}

发布了261 篇原创文章 · 获赞 84 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/zhizhengguan/article/details/105382133
今日推荐