@@ -67,10 +67,11 @@ void CHttpClient::ClearAll(){
67
67
}
68
68
m_aryItems.clear ();
69
69
}
70
- CHttpClientItem* CHttpClient::Fetch (const char * url, UtilHTTPMethod method){
70
+ CHttpClientItem* CHttpClient::Fetch (const char * url, UtilHTTPMethod method, bool async ){
71
71
httpContext_t ctx = {
72
72
url,
73
73
method,
74
+ async,
74
75
nullptr
75
76
};
76
77
CHttpClientItem* item = new CHttpClientItem (&ctx);
@@ -103,25 +104,23 @@ CHttpClientItem::CHttpClientItem(httpContext_s* ctx) : IUtilHTTPCallbacks(){
103
104
m_hContext.url = ctx->url ;
104
105
m_hContext.method = ctx->method ;
105
106
m_pCookieJar = ctx->cookie ;
106
- m_iStatue = HTTPCLIENT_STATE::INVALID;
107
- }
108
- CHttpClientItem* CHttpClientItem::Create (bool async){
109
107
m_iStatue = HTTPCLIENT_STATE::PENDING;
110
- if (async)
108
+ m_bAsync = ctx->async ;
109
+ if (m_bAsync)
111
110
m_pRequest = g_pUtilHTTPClient->CreateAsyncRequest (m_hContext.url .c_str (), m_hContext.method , this );
112
111
else
113
112
m_pRequest = g_pUtilHTTPClient->CreateSyncRequest (m_hContext.url .c_str (), m_hContext.method , this );
114
113
if (m_pCookieJar)
115
114
m_pRequest->SetField (" Set-Cookie" , m_pCookieJar->Get ().c_str ());
116
- m_bAsync = async;
117
- return this ;
118
115
}
119
116
CHttpClientItem* CHttpClientItem::Start (){
117
+ if (!m_pRequest)
118
+ return nullptr ;
120
119
if (m_bAsync) {
121
- if ( m_pRequest)
122
- m_pRequest-> Send () ;
120
+ m_pRequest-> Send ();
121
+ return this ;
123
122
}
124
- return this ;
123
+ return nullptr ;
125
124
}
126
125
IUtilHTTPResponse* CHttpClientItem::StartSync (){
127
126
if (!m_bAsync) {
@@ -130,6 +129,7 @@ IUtilHTTPResponse* CHttpClientItem::StartSync(){
130
129
auto reb = m_pRequest->GetResponse ();
131
130
if (m_pCookieJar) {
132
131
char cookiebuf[MAX_COOKIE_LENGTH];
132
+ memset (cookiebuf, 0 , MAX_COOKIE_LENGTH);
133
133
reb->GetHeader (" Set-Cookie" , cookiebuf, MAX_COOKIE_LENGTH);
134
134
m_pCookieJar->Set (cookiebuf);
135
135
}
@@ -138,11 +138,28 @@ IUtilHTTPResponse* CHttpClientItem::StartSync(){
138
138
return nullptr ;
139
139
}
140
140
CHttpClientItem* CHttpClientItem::SetFeild (const char * key, const char * var){
141
- if (m_pRequest)
141
+ if (m_pRequest) {
142
142
m_pRequest->SetField (key, var);
143
- return this ;
143
+ return this ;
144
+ }
145
+ return nullptr ;
144
146
}
145
147
148
+ CHttpClientItem* CHttpClientItem::SetPostBody (const char * contentType, const char * payload, size_t payloadSize) {
149
+ if (m_pRequest) {
150
+ m_pRequest->SetPostBody (contentType, payload, payloadSize);
151
+ return this ;
152
+ }
153
+ return nullptr ;
154
+ }
155
+ CHttpClientItem* CHttpClientItem::SetCookieJar (CHttpCookieJar* jar)
156
+ {
157
+ if (m_pRequest) {
158
+ m_pCookieJar = jar;
159
+ return this ;
160
+ }
161
+ return nullptr ;
162
+ }
146
163
HTTPCLIENT_STATE CHttpClientItem::GetState () const {
147
164
return m_iStatue;
148
165
}
0 commit comments