| 79 | } |
| 80 | |
| 81 | Network::Reply Network::httpPost(const QString &url, const QByteArray &data, const QStringList &header, const QUrlQuery &query) |
| 82 | { |
| 83 | QUrl queryUrl(url); |
| 84 | if(!query.isEmpty()) queryUrl.setQuery(query); |
| 85 | QNetworkRequest request; |
| 86 | if(header.size()>=2) |
| 87 | { |
| 88 | for(int i=0;i<header.size();i+=2) |
| 89 | { |
| 90 | request.setRawHeader(header[i].toUtf8(),header[i+1].toUtf8()); |
| 91 | } |
| 92 | } |
| 93 | request.setUrl(queryUrl); |
| 94 | |
| 95 | QNetworkAccessManager *manager = getManager(); |
| 96 | manager->setCookieJar(nullptr); |
| 97 | |
| 98 | QTimer timer; |
| 99 | timer.setInterval(timeout); |
| 100 | timer.setSingleShot(true); |
| 101 | QNetworkReply *reply = manager->post(request, data); |
| 102 | |
| 103 | QEventLoop eventLoop; |
| 104 | QObject::connect(getAbortFlag(), &ReqAbortFlagObj::abort, &eventLoop, &QEventLoop::quit); |
| 105 | QObject::connect(&timer, &QTimer::timeout, &eventLoop, &QEventLoop::quit); |
| 106 | QObject::connect(reply, &QNetworkReply::finished, &eventLoop, &QEventLoop::quit); |
| 107 | timer.start(); |
| 108 | eventLoop.exec(); |
| 109 | |
| 110 | Reply replyObj; |
| 111 | |
| 112 | if (timer.isActive()) |
| 113 | { |
| 114 | timer.stop(); |
| 115 | if (reply->error() == QNetworkReply::NoError) |
| 116 | { |
| 117 | replyObj.hasError = false; |
| 118 | replyObj.statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); |
| 119 | replyObj.content = reply->readAll(); |
| 120 | replyObj.headers = reply->rawHeaderPairs(); |
| 121 | } |
| 122 | else |
| 123 | { |
| 124 | replyObj.hasError = true; |
| 125 | replyObj.errInfo=reply->errorString(); |
| 126 | } |
| 127 | } |
| 128 | else |
| 129 | { |
| 130 | QObject::disconnect(reply, &QNetworkReply::finished, &eventLoop, &QEventLoop::quit); |
| 131 | reply->abort(); |
| 132 | replyObj.hasError = true; |
| 133 | replyObj.errInfo=QObject::tr("Replay Timeout"); |
| 134 | } |
| 135 | reply->deleteLater(); |
| 136 | return replyObj; |
| 137 | } |
| 138 | |