| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #include "httprequest.h"
- #include <QUrl>
- #include <QJsonParseError>
- #include <QNetworkReply>
- 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<QString, QString> &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<QString,QVariant> body)
- //{
- //// qDebug()<<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::finishRequest(QNetworkReply * reply)
- {
- if (reply->error()){
- qDebug()<<"Error!"<<endl;
- emit result(500, QJsonObject());
- }else{
- QByteArray byte_array = reply->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<QString,QString> 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<QString,QVariant> 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);
- // }
- //}
|