68 {
70 "httpclient",
71 [](const std::shared_ptr<Request>& req) {
72 VLOG(1) << req->getSocketContext()->getSocketConnection()->getConnectionName() << ": OnRequestStart";
73
74 req->httpMinor = 0;
75 req->url = "/";
76 req->set("Connection", "keep-alive");
77 req->setTrailer("MyTrailer",
78 "MyTrailerValue");
79
80 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
82 });
83#define LONG
84#ifdef LONG
85 req->url = "/hihihih";
86 req->set("Connection", "keep-alive");
87 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
89 });
90
91 req->httpMinor = 1;
92 req->url = "/index.html";
93
94 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
96 });
97 req->url = "/";
98 req->set("Connection", "keep-alive");
99 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
101 });
102 req->url = "/index.html";
103 req->set("Connection", "keep-alive");
104 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
106 });
107 req->url = "/";
108 req->set("Connection", "keep-alive");
109 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
111 });
112 req->url = "/index.html";
113 req->set("Connection", "keep-alive");
114 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
116 });
117 req->url = "/";
118 req->set("Connection", "keep-alive");
119 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
121 });
122 req->url = "/index.html";
123 req->set("Connection", "keep-alive");
124 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
126 });
127 req->url = "/";
128 req->set("Connection", "keep-alive");
129 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
131 });
132 req->url = "/index.html";
133 req->set("Connection", "keep-alive");
134 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
136 });
137 req->url = "/";
138 req->set("Connection", "keep-alive");
139 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
141 });
142 req->url = "/index.html";
143 req->set("Connection", "keep-alive");
144 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
146 });
147 req->url = "/";
148 req->set("Connection", "keep-alive");
149 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
151 });
152 req->url = "/index.html";
153 req->set("Connection", "keep-alive");
154 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
156 });
157 req->url = "/";
158 req->set("Connection", "keep-alive");
159 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
161 });
162 req->url = "/index.html";
163 req->set("Connection", "keep-alive");
164 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
166 });
167 req->url = "/";
168 req->set("Connection", "keep-alive");
169 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
171 });
172
173 req->httpMinor = 1;
174 req->method = "POST";
175 req->url = "/";
176 req->set("Test", "aaa");
177 req->setTrailer("MyTrailer1",
178 "MyTrailerValue1");
179
180 req->setTrailer("MyTrailer2", "MyTrailerValue2");
181 req->setTrailer("MyTrailer3", "MyTrailerValue3");
182 req->setTrailer("MyTrailer4", "MyTrailerValue4");
183 req->setTrailer("MyTrailer5", "MyTrailerValue5");
184 req->setTrailer("MyTrailer6", "MyTrailerValue6");
185 req->query("Query1", "QueryValue1");
186 req->query("Query2", "QueryValue2");
187 req->sendFile(
188 "/home/voc/projects/snodec/snode.c/CMakeLists.txt",
189 [req](int ret) {
190 if (ret == 0) {
191 VLOG(1) << req->getSocketContext()->getSocketConnection()->getConnectionName()
192 << " HTTP: Request accepted: POST / HTTP/" << req->httpMajor << "." << req->httpMinor;
193 VLOG(1) << " /home/voc/projects/snodec/snode.c/CMakeLists.txt";
194 } else {
195 LOG(ERROR) << req->getSocketContext()->getSocketConnection()->getConnectionName()
196 << " HTTP: Request failed: POST / HTTP/" << req->httpMajor << "." << req->httpMinor;
197 PLOG(ERROR) << " /home/voc/projects/snodec/snode.c/CMakeLists.txt";
198
199 req->set("Connection", "close");
200 req->end([]([[maybe_unused]] const std::shared_ptr<Request>& req,
201 [[maybe_unused]] const std::shared_ptr<Response>& res) {
202 });
203 }
204 },
205 [](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
207
208 req->init();
209 req->method = "POST";
210 req->url = "/";
211 req->set("Connection", "keep-alive");
212 req->set("Test", "bbb");
213 req->sendFile(
214 "/home/voc/projects/snodec/snode.c/CMakeLists.tt",
215 [req](int ret) {
216 if (ret == 0) {
217 VLOG(1) << req->getSocketContext()->getSocketConnection()->getConnectionName()
218 << " HTTP: Request accepted: POST / HTTP/" << req->httpMajor << "." << req->httpMinor;
219 VLOG(1) << " /home/voc/projects/snodec/snode.c/CMakeLists.tt";
220 } else {
221 LOG(ERROR) << req->getSocketContext()->getSocketConnection()->getConnectionName()
222 << " HTTP: Request failed: POST / HTTP/" << req->httpMajor << "." << req->httpMinor;
223 PLOG(ERROR) << " /home/voc/projects/snodec/snode.c/CMakeLists.tt";
224
225 req->init();
226 req->method = "GET";
227 req->url = "/";
228 req->set("Connection", "close");
229 req->set("Test", "ccc");
230 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
232 });
233 }
234 },
235 [](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
237 });
238 });
239 req->init();
240 req->method = "GET";
241 req->url = "/";
242 req->set("Connection", "close");
243 req->set("Test", "xxx");
244 req->end([](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
246 });
248 req->method = "POST";
249 req->url = "/";
250 req->set("Connection", "keep-alive");
251 req->set("Test", "ddd");
252 req->sendFile(
253 "/home/voc/projects/snodec/snode.c/CMakeLists.txt",
254 [req](int ret) {
255 if (ret == 0) {
256 VLOG(1) << req->getSocketContext()->getSocketConnection()->getConnectionName()
257 << " HTTP: Request accepted: POST / HTTP/" << req->httpMajor << "." << req->httpMinor;
258 VLOG(1) << " /home/voc/projects/snodec/snode.c/CMakeLists.txt";
259 } else {
260 LOG(ERROR) << req->getSocketContext()->getSocketConnection()->getConnectionName()
261 << " HTTP: Request failed: POST / HTTP/" << req->httpMajor << "." << req->httpMinor;
262 PLOG(ERROR) << " /home/voc/projects/snodec/snode.c/CMakeLists.txt";
263
264 req->set("Connection", "close");
265 req->end([]([[maybe_unused]] const std::shared_ptr<Request>& req,
266 [[maybe_unused]] const std::shared_ptr<Response>& res) {
267 });
268 }
269 },
270 [](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
272 });
273
274 req->method = "POST";
275 req->url = "/";
276 req->set("Connection", "keep-alive");
277 req->set("Test", "eee");
278 req->setTrailer("MyTrailer1", "MyTrailerValue1");
279 req->setTrailer("MyTrailer2", "MyTrailerValue2");
280 req->sendFile(
281 "/home/voc/projects/snodec/snode.c/CMakeLists.txt",
282 [req](int ret) {
283 if (ret == 0) {
284 VLOG(1) << req->getSocketContext()->getSocketConnection()->getConnectionName()
285 << " HTTP: Request accepted: POST / HTTP/" << req->httpMajor << "." << req->httpMinor;
286 VLOG(1) << " /home/voc/projects/snodec/snode.c/CMakeLists.txt";
287 } else {
288 LOG(ERROR) << req->getSocketContext()->getSocketConnection()->getConnectionName()
289 << " HTTP: Request failed: POST / HTTP/" << req->httpMajor << "." << req->httpMinor;
290 PLOG(ERROR) << " /home/voc/projects/snodec/snode.c/CMakeLists.txt";
291
292 req->set("Connection", "close");
293 req->end([]([[maybe_unused]] const std::shared_ptr<Request>& req,
294 [[maybe_unused]] const std::shared_ptr<Response>& res) {
295 });
296 }
297 },
298 [](const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
300 });
301 });
302#endif
303 },
304 []([[maybe_unused]] const std::shared_ptr<Request>& req) {
305 VLOG(1) << req->getSocketContext()->getSocketConnection()->getConnectionName() << ": OnRequestEnd";
306 });
307
308 client.setOnConnect([](SocketConnection* socketConnection) {
309 VLOG(1) << socketConnection->getConnectionName() << ": OnConnect";
310
311 VLOG(1) << "\tLocal: " << socketConnection->getLocalAddress().toString();
312 VLOG(1) << "\tPeer: " << socketConnection->getRemoteAddress().toString();
313 });
314
315 client.setOnDisconnect([](SocketConnection* socketConnection) {
316 VLOG(1) << socketConnection->getConnectionName() << ": OnDisconnect";
317
318 VLOG(1) << "\tLocal: " << socketConnection->getLocalAddress().toString();
319 VLOG(1) << "\tPeer: " << socketConnection->getRemoteAddress().toString();
320 });
321
322 return client;
323 }
static void atNextTick(const std::function< void(void)> &callBack)
static void logResponse(const std::shared_ptr< web::http::client::Request > &req, const std::shared_ptr< web::http::client::Response > &res)
web::http::legacy::NET::Client Client