Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jlib
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
captainwong
jlib
Commits
c9a1ab5a
Commit
c9a1ab5a
authored
Sep 04, 2021
by
captainwong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
retry and timeout
parent
9ea33f82
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
85 additions
and
9 deletions
+85
-9
HttpDlg.cpp
jlib/qt/View/HttpDlg.cpp
+68
-6
HttpDlg.h
jlib/qt/View/HttpDlg.h
+17
-3
No files found.
jlib/qt/View/HttpDlg.cpp
View file @
c9a1ab5a
...
@@ -11,9 +11,11 @@ using namespace jlib::qt;
...
@@ -11,9 +11,11 @@ using namespace jlib::qt;
//namespace HBVideoPlatform {
//namespace HBVideoPlatform {
//namespace common {
//namespace common {
HttpDlg
::
HttpDlg
(
QWidget
*
parent
,
int
timeout
,
HttpDlgGif
gif
)
HttpDlg
::
HttpDlg
(
QWidget
*
parent
,
int
timeout
,
int
retries
,
HttpDlgGif
gif
)
:
QDialog
(
parent
)
:
QDialog
(
parent
)
,
timeout
(
timeout
)
,
time_out_sec_
(
timeout
)
,
time_out_sec_
(
timeout
)
,
retrys
(
retrys
)
,
gif_
(
gif
)
,
gif_
(
gif
)
{
{
setWindowModality
(
Qt
::
WindowModal
);
setWindowModality
(
Qt
::
WindowModal
);
...
@@ -52,7 +54,10 @@ HttpDlg::~HttpDlg()
...
@@ -52,7 +54,10 @@ HttpDlg::~HttpDlg()
void
HttpDlg
::
get
(
const
QUrl
&
url
)
void
HttpDlg
::
get
(
const
QUrl
&
url
)
{
{
get
(
QNetworkRequest
(
url
));
lastRequest_
=
QNetworkRequest
(
url
);
lastMethod_
=
Method
::
Get
;
lastData_
.
clear
();
get
(
lastRequest_
);
}
}
void
HttpDlg
::
get
(
const
QNetworkRequest
&
request
)
void
HttpDlg
::
get
(
const
QNetworkRequest
&
request
)
...
@@ -61,6 +66,9 @@ void HttpDlg::get(const QNetworkRequest& request)
...
@@ -61,6 +66,9 @@ void HttpDlg::get(const QNetworkRequest& request)
disconnect
(
connection_
);
disconnect
(
connection_
);
}
}
connection_
=
connect
(
mgr
,
&
QNetworkAccessManager
::
finished
,
this
,
&
HttpDlg
::
onFinished
);
connection_
=
connect
(
mgr
,
&
QNetworkAccessManager
::
finished
,
this
,
&
HttpDlg
::
onFinished
);
lastRequest_
=
request
;
lastMethod_
=
Method
::
Get
;
lastData_
.
clear
();
reply_
=
mgr
->
get
(
request
);
reply_
=
mgr
->
get
(
request
);
run
();
run
();
...
@@ -69,7 +77,10 @@ void HttpDlg::get(const QNetworkRequest& request)
...
@@ -69,7 +77,10 @@ void HttpDlg::get(const QNetworkRequest& request)
void
HttpDlg
::
post
(
const
QUrl
&
url
)
void
HttpDlg
::
post
(
const
QUrl
&
url
)
{
{
QNetworkRequest
request
(
url
);
QNetworkRequest
request
(
url
);
request
.
setHeader
(
QNetworkRequest
::
ContentTypeHeader
,
"application/x-www-form-urlencoded"
);
request
.
setHeader
(
QNetworkRequest
::
ContentTypeHeader
,
"application/x-www-form-urlencoded"
);
lastRequest_
=
request
;
lastMethod_
=
Method
::
Post
;
lastData_
.
clear
();
post
(
request
,
QByteArray
());
post
(
request
,
QByteArray
());
}
}
...
@@ -79,6 +90,9 @@ void HttpDlg::post(const QNetworkRequest& request)
...
@@ -79,6 +90,9 @@ void HttpDlg::post(const QNetworkRequest& request)
disconnect
(
connection_
);
disconnect
(
connection_
);
}
}
connection_
=
connect
(
mgr
,
&
QNetworkAccessManager
::
finished
,
this
,
&
HttpDlg
::
onFinished
);
connection_
=
connect
(
mgr
,
&
QNetworkAccessManager
::
finished
,
this
,
&
HttpDlg
::
onFinished
);
lastRequest_
=
request
;
lastMethod_
=
Method
::
Post
;
lastData_
.
clear
();
reply_
=
mgr
->
post
(
request
,
QByteArray
());
reply_
=
mgr
->
post
(
request
,
QByteArray
());
run
();
run
();
...
@@ -90,6 +104,9 @@ void HttpDlg::post(const QNetworkRequest & request, const QByteArray & data)
...
@@ -90,6 +104,9 @@ void HttpDlg::post(const QNetworkRequest & request, const QByteArray & data)
disconnect
(
connection_
);
disconnect
(
connection_
);
}
}
connection_
=
connect
(
mgr
,
&
QNetworkAccessManager
::
finished
,
this
,
&
HttpDlg
::
onFinished
);
connection_
=
connect
(
mgr
,
&
QNetworkAccessManager
::
finished
,
this
,
&
HttpDlg
::
onFinished
);
lastRequest_
=
request
;
lastMethod_
=
Method
::
Post
;
lastData_
=
data
;
reply_
=
mgr
->
post
(
request
,
data
);
reply_
=
mgr
->
post
(
request
,
data
);
run
();
run
();
}
}
...
@@ -100,6 +117,9 @@ void HttpDlg::put(const QNetworkRequest& request, const QByteArray& data)
...
@@ -100,6 +117,9 @@ void HttpDlg::put(const QNetworkRequest& request, const QByteArray& data)
disconnect
(
connection_
);
disconnect
(
connection_
);
}
}
connection_
=
connect
(
mgr
,
&
QNetworkAccessManager
::
finished
,
this
,
&
HttpDlg
::
onFinished
);
connection_
=
connect
(
mgr
,
&
QNetworkAccessManager
::
finished
,
this
,
&
HttpDlg
::
onFinished
);
lastRequest_
=
request
;
lastMethod_
=
Method
::
Put
;
lastData_
=
data
;
reply_
=
mgr
->
put
(
request
,
data
);
reply_
=
mgr
->
put
(
request
,
data
);
run
();
run
();
}
}
...
@@ -110,6 +130,9 @@ void HttpDlg::patch(const QNetworkRequest& request, const QByteArray& data)
...
@@ -110,6 +130,9 @@ void HttpDlg::patch(const QNetworkRequest& request, const QByteArray& data)
disconnect
(
connection_
);
disconnect
(
connection_
);
}
}
connection_
=
connect
(
mgr
,
&
QNetworkAccessManager
::
finished
,
this
,
&
HttpDlg
::
onFinished
);
connection_
=
connect
(
mgr
,
&
QNetworkAccessManager
::
finished
,
this
,
&
HttpDlg
::
onFinished
);
lastRequest_
=
request
;
lastMethod_
=
Method
::
Patch
;
lastData_
=
data
;
reply_
=
mgr
->
sendCustomRequest
(
request
,
"PATCH"
,
data
);
reply_
=
mgr
->
sendCustomRequest
(
request
,
"PATCH"
,
data
);
run
();
run
();
}
}
...
@@ -120,6 +143,9 @@ void HttpDlg::deleteResource(const QNetworkRequest& request)
...
@@ -120,6 +143,9 @@ void HttpDlg::deleteResource(const QNetworkRequest& request)
disconnect
(
connection_
);
disconnect
(
connection_
);
}
}
connection_
=
connect
(
mgr
,
&
QNetworkAccessManager
::
finished
,
this
,
&
HttpDlg
::
onFinished
);
connection_
=
connect
(
mgr
,
&
QNetworkAccessManager
::
finished
,
this
,
&
HttpDlg
::
onFinished
);
lastRequest_
=
request
;
lastMethod_
=
Method
::
Delete
;
lastData_
.
clear
();
reply_
=
mgr
->
deleteResource
(
request
);
reply_
=
mgr
->
deleteResource
(
request
);
run
();
run
();
}
}
...
@@ -145,6 +171,8 @@ void HttpDlg::run()
...
@@ -145,6 +171,8 @@ void HttpDlg::run()
label_
->
setMovie
(
movie
);
label_
->
setMovie
(
movie
);
movie
->
start
();
movie
->
start
();
time_out_sec_
=
timeout
;
retry_counter
=
retrys
;
timer_
.
start
();
timer_
.
start
();
timer_id_
=
startTimer
(
1000
);
timer_id_
=
startTimer
(
1000
);
...
@@ -166,8 +194,40 @@ void HttpDlg::timerEvent(QTimerEvent * e)
...
@@ -166,8 +194,40 @@ void HttpDlg::timerEvent(QTimerEvent * e)
MYQCRITICAL
<<
"timeout"
;
MYQCRITICAL
<<
"timeout"
;
disconnect
(
connection_
);
disconnect
(
connection_
);
killTimer
(
timer_id_
);
killTimer
(
timer_id_
);
result_
=
HttpDlgErrorCode
::
Timeout
;
if
(
reply_
)
{
QDialog
::
reject
();
reply_
->
deleteLater
();
}
if
(
retry_counter
<=
0
)
{
result_
=
HttpDlgErrorCode
::
Timeout
;
QDialog
::
reject
();
}
else
{
retry_counter
--
;
MYQDEBUG
<<
"retry_counter ="
<<
retry_counter
;
connection_
=
connect
(
mgr
,
&
QNetworkAccessManager
::
finished
,
this
,
&
HttpDlg
::
onFinished
);
switch
(
lastMethod_
)
{
case
HttpDlg
:
:
Method
::
Get
:
reply_
=
mgr
->
get
(
lastRequest_
);
break
;
case
HttpDlg
:
:
Method
::
Post
:
reply_
=
mgr
->
post
(
lastRequest_
,
lastData_
);
break
;
case
HttpDlg
:
:
Method
::
Put
:
reply_
=
mgr
->
put
(
lastRequest_
,
lastData_
);
break
;
case
HttpDlg
:
:
Method
::
Patch
:
reply_
=
mgr
->
sendCustomRequest
(
lastRequest_
,
"PATCH"
,
lastData_
);
break
;
case
HttpDlg
:
:
Method
::
Delete
:
reply_
=
mgr
->
deleteResource
(
lastRequest_
);
break
;
}
time_out_sec_
=
timeout
;
retry_counter
=
retrys
;
timer_
.
start
();
timer_id_
=
startTimer
(
1000
);
}
}
}
}
}
...
@@ -207,7 +267,9 @@ void HttpDlg::onFinished(QNetworkReply * reply)
...
@@ -207,7 +267,9 @@ void HttpDlg::onFinished(QNetworkReply * reply)
Json
::
Reader
reader
;
Json
::
Reader
reader
;
root_
.
clear
();
root_
.
clear
();
if
(
!
reader
.
parse
(
res
.
constData
(),
root_
))
{
if
(
!
reader
.
parse
(
res
.
constData
(),
root_
))
{
result_
=
HttpDlgErrorCode
::
ParseJsonError
;
if
(
result_
!=
HttpDlgErrorCode
::
HttpStatusNeq200
)
{
result_
=
HttpDlgErrorCode
::
ParseJsonError
;
}
break
;
break
;
}
}
...
...
jlib/qt/View/HttpDlg.h
View file @
c9a1ab5a
...
@@ -25,7 +25,15 @@ public:
...
@@ -25,7 +25,15 @@ public:
};
};
HttpDlg
(
QWidget
*
parent
=
nullptr
,
int
timeOut
=
10
,
HttpDlgGif
gif
=
HttpDlgGif
::
Spinner1s_200px_gray
);
enum
class
Method
{
Get
,
Post
,
Put
,
Patch
,
Delete
,
};
HttpDlg
(
QWidget
*
parent
=
nullptr
,
int
timeOut
=
10
,
int
retries
=
0
,
HttpDlgGif
gif
=
HttpDlgGif
::
Spinner1s_200px_gray
);
~
HttpDlg
();
~
HttpDlg
();
void
get
(
const
QUrl
&
url
);
void
get
(
const
QUrl
&
url
);
...
@@ -98,10 +106,16 @@ private:
...
@@ -98,10 +106,16 @@ private:
int
httpStatusCode_
=
0
;
int
httpStatusCode_
=
0
;
QString
httpReason_
=
{};
QString
httpReason_
=
{};
Json
::
Value
root_
=
{};
Json
::
Value
root_
=
{};
const
int
timeout
;
int
time_out_sec_
=
10
;
int
time_out_sec_
=
10
;
int
timer_id_
=
0
;
int
timer_id_
=
0
;
QNetworkAccessManager
*
mgr
=
{};
const
int
retrys
;
QNetworkReply
*
reply_
=
{};
int
retry_counter
=
0
;
QNetworkAccessManager
*
mgr
{};
QNetworkRequest
lastRequest_
{};
Method
lastMethod_
=
Method
::
Post
;
QByteArray
lastData_
{};
QNetworkReply
*
reply_
{};
QMetaObject
::
Connection
connection_
=
{};
QMetaObject
::
Connection
connection_
=
{};
QLabel
*
label_
=
{};
QLabel
*
label_
=
{};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment