#include "httprequest.h" #include #include #include HttpRequest::HttpRequest(QObject *parent) : QObject(parent) { connect(&_manager, &QNetworkAccessManager::finished, this, &HttpRequest::finishRequest); } void HttpRequest::get(const QString & url) { QNetworkRequest req; req.setUrl(QUrl(url)); initRequest(req); _manager.get(req); } void HttpRequest::post(const QString & url, const QJsonObject & body) { QNetworkRequest req; req.setUrl(url); initRequest(req, 1); req.setHeader(QNetworkRequest::ContentTypeHeader,"application/json"); _manager.post(req, QJsonDocument(body).toJson()); } void HttpRequest::post(const QString & url, const QMap &body) { QNetworkRequest req; QHttpMultiPart * part = new QHttpMultiPart(); part->setContentType(QHttpMultiPart::FormDataType); req.setUrl(QUrl(url)); initRequest(req, 1); auto v = QString("multipart/form-data;boundary=%1").arg(QString(part->boundary())); req.setHeader(QNetworkRequest::ContentTypeHeader,v); initMultiPart(*part, body); auto rep = _manager.post(req, part); part->setParent(rep); } //void HttpRequest::post(const QString & url,const QMap body) //{ //// qDebug()<setContentType(QHttpMultiPart::FormDataType); // req.setUrl(QUrl(url)); // initRequest(req, 1); // auto v = QString("multipart/form-data;boundary=%1").arg(QString(part->boundary())); // req.setHeader(QNetworkRequest::ContentTypeHeader,v); // initMultiPart(*part, body); // auto rep = _manager.post(req, part); // part->setParent(rep); //} void HttpRequest::finishRequest(QNetworkReply * reply) { if (reply->error()){ qDebug()<<"Error!"<readAll(); QJsonParseError json_error; QJsonDocument parse_document = QJsonDocument::fromJson(byte_array, &json_error); if(json_error.error == QJsonParseError::NoError) { if(parse_document.isObject()) { emit result(200, parse_document.object()); reply->deleteLater(); return; } } emit result(200, QJsonObject()); } reply->deleteLater(); } void HttpRequest::initRequest(QNetworkRequest & req, bool post) { if(!_aid.isEmpty()){ req.setRawHeader("Auid",_aid.toUtf8()); req.setRawHeader("Access-Token",_token.toUtf8()); } // if(post) // { // req.setHeader(QNetworkRequest::ContentTypeHeader,"multipart/form-data"); // } } void HttpRequest::initMultiPart(QHttpMultiPart & part,const QMap body) { for(auto begin = body.begin(); begin != body.end(); ++begin){ QHttpPart textPart; textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QString("form-data; name=\"%1\"").arg(begin.key())); textPart.setBody(begin.value().toUtf8()); part.append(textPart); } } //void HttpRequest::initMultiPart(QHttpMultiPart & part,const QMap body) //{ // for(auto begin = body.begin(); begin != body.end(); ++begin){ // QHttpPart textPart; // textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QString("form-data; name=\"%1\"").arg(begin.key())); // if(begin.value().typeName()=="QString") // { // textPart.setBody(begin.value().toString().toUtf8()); // } // else // { // textPart.setBody(begin.value().toByteArray()); // } // part.append(textPart); // } //}