MCPcopy Create free account
hub / github.com/KikoPlayProject/KikoPlay / httpPost

Method httpPost

Common/network.cpp:81–137  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

79}
80
81Network::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

Callers

nothing calls this directly

Calls 7

errorMethod · 0.80
isEmptyMethod · 0.45
sizeMethod · 0.45
postMethod · 0.45
startMethod · 0.45
stopMethod · 0.45
abortMethod · 0.45

Tested by

no test coverage detected