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

Method httpGet

Common/network.cpp:22–79  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20}
21
22Network::Reply Network::httpGet(const QString &url, const QUrlQuery &query, const QStringList &header, bool redirect)
23{
24 QUrl queryUrl(url);
25 if(!query.isEmpty()) queryUrl.setQuery(query);
26 QNetworkRequest request;
27 request.setUrl(queryUrl);
28 if(header.size()>=2)
29 {
30 Q_ASSERT((header.size() & 1) ==0);
31 for(int i=0;i<header.size();i+=2)
32 {
33 request.setRawHeader(header[i].toUtf8(),header[i+1].toUtf8());
34 }
35 }
36 request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, redirect);
37 request.setMaximumRedirectsAllowed(maxRedirectTimes);
38
39 QNetworkAccessManager *manager = getManager();
40 manager->setCookieJar(nullptr);
41
42 QTimer timer;
43 timer.setInterval(timeout);
44 timer.setSingleShot(true);
45 QNetworkReply *reply = manager->get(request);
46
47 QEventLoop eventLoop;
48 QObject::connect(getAbortFlag(), &ReqAbortFlagObj::abort, &eventLoop, &QEventLoop::quit);
49 QObject::connect(&timer, &QTimer::timeout, &eventLoop, &QEventLoop::quit);
50 QObject::connect(reply, &QNetworkReply::finished, &eventLoop, &QEventLoop::quit);
51 timer.start();
52 eventLoop.exec();
53 Reply replyObj;
54 if (timer.isActive())
55 {
56 timer.stop();
57 if (reply->error() == QNetworkReply::NoError)
58 {
59 replyObj.hasError = false;
60 replyObj.statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
61 replyObj.content = reply->readAll();
62 replyObj.headers = reply->rawHeaderPairs();
63 }
64 else
65 {
66 replyObj.hasError = true;
67 replyObj.errInfo=reply->errorString();
68 }
69 }
70 else
71 {
72 QObject::disconnect(reply, &QNetworkReply::finished, &eventLoop, &QEventLoop::quit);
73 reply->abort();
74 replyObj.hasError = true;
75 replyObj.errInfo=QObject::tr("Replay Timeout");
76 }
77 reply->deleteLater();
78 return replyObj;
79}

Callers

nothing calls this directly

Calls 7

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

Tested by

no test coverage detected