httprequest.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #include "httprequest.h"
  2. #include <QUrl>
  3. #include <QJsonParseError>
  4. #include <QNetworkReply>
  5. #include <pqQtlib/transport/pqhttpformdata.h>
  6. HttpRequest::HttpRequest(QObject *parent) : QObject(parent)
  7. {
  8. connect(&_manager, &QNetworkAccessManager::finished, this, &HttpRequest::finishRequest);
  9. }
  10. void HttpRequest::get(const QString & url)
  11. {
  12. QNetworkRequest req;
  13. req.setUrl(QUrl(url));
  14. initRequest(req);
  15. _manager.get(req);
  16. }
  17. void HttpRequest::post(const QString & url, const QJsonObject & body)
  18. {
  19. QNetworkRequest req;
  20. req.setUrl(url);
  21. initRequest(req, 1);
  22. req.setHeader(QNetworkRequest::ContentTypeHeader,"application/json");
  23. _manager.post(req, QJsonDocument(body).toJson());
  24. }
  25. void HttpRequest::post(const QString & url, const QMap<QString, QString> &body)
  26. {
  27. QNetworkRequest req;
  28. req.setUrl(QUrl(url));
  29. initRequest(req, 1);
  30. PQ::PQHttpFormData * dt = new PQ::PQHttpFormData();
  31. dt->set(body);
  32. dt->postThis(&_manager,req);
  33. }
  34. void HttpRequest::finishRequest(QNetworkReply * reply)
  35. {
  36. if (reply->error()){
  37. //qDebug()<<"Error!"<<endl;
  38. emit result(500, QJsonObject());
  39. }else{
  40. QByteArray byte_array = reply->readAll();
  41. QJsonParseError json_error;
  42. QJsonDocument parse_document = QJsonDocument::fromJson(byte_array, &json_error);
  43. if(json_error.error == QJsonParseError::NoError)
  44. {
  45. if(parse_document.isObject())
  46. {
  47. emit result(200, parse_document.object());
  48. reply->deleteLater();
  49. return;
  50. }
  51. }
  52. emit result(200, QJsonObject());
  53. }
  54. reply->deleteLater();
  55. }
  56. QNetworkRequest HttpRequest::request(const QString & url)
  57. {
  58. QNetworkRequest req;
  59. req.setUrl(url);
  60. initRequest(req, 1);
  61. return req;
  62. }
  63. void HttpRequest::initRequest(QNetworkRequest & req, bool /*post*/)
  64. {
  65. if(!_aid.isEmpty()){
  66. req.setRawHeader("Auid",_aid.toUtf8());
  67. req.setRawHeader("Access-Token",_token.toUtf8());
  68. }
  69. // if(post)
  70. // {
  71. // req.setHeader(QNetworkRequest::ContentTypeHeader,"multipart/form-data");
  72. // }
  73. }
  74. void HttpRequest::initMultiPart(QHttpMultiPart & part,const QMap<QString,QString> body)
  75. {
  76. for(auto begin = body.begin(); begin != body.end(); ++begin){
  77. QHttpPart textPart;
  78. textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QString("form-data; name=\"%1\"").arg(begin.key()));
  79. textPart.setBody(begin.value().toUtf8());
  80. part.append(textPart);
  81. }
  82. }
  83. //void HttpRequest::initMultiPart(QHttpMultiPart & part,const QMap<QString,QVariant> body)
  84. //{
  85. // for(auto begin = body.begin(); begin != body.end(); ++begin){
  86. // QHttpPart textPart;
  87. // textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QString("form-data; name=\"%1\"").arg(begin.key()));
  88. // if(begin.value().typeName()=="QString")
  89. // {
  90. // textPart.setBody(begin.value().toString().toUtf8());
  91. // }
  92. // else
  93. // {
  94. // textPart.setBody(begin.value().toByteArray());
  95. // }
  96. // part.append(textPart);
  97. // }
  98. //}