mirror of
https://github.com/cesanta/mongoose.git
synced 2024-12-23 15:57:49 +08:00
45 lines
1009 B
Markdown
45 lines
1009 B
Markdown
|
---
|
||
|
title: HTTP client example
|
||
|
---
|
||
|
|
||
|
To create an HTTP client, follow this pattern:
|
||
|
|
||
|
1. Create an outbound connection by calling `mg_connect_http()`
|
||
|
2. Create an event handler function that handles `MG_EV_HTTP_REPLY` event
|
||
|
|
||
|
Here's an example of the simplest HTTP client.
|
||
|
Error checking is omitted for the sake of clarity:
|
||
|
|
||
|
```c
|
||
|
#include "mongoose.h"
|
||
|
|
||
|
static const char *url = "http://www.google.com";
|
||
|
static int exit_flag = 0;
|
||
|
|
||
|
static void ev_handler(struct mg_connection *c, int ev, void *p) {
|
||
|
if (ev == MG_EV_HTTP_REPLY) {
|
||
|
c->flags |= MG_F_CLOSE_IMMEDIATELY;
|
||
|
fwrite(hm->message.p, 1, hm->message.len, stdout);
|
||
|
putchar('\n');
|
||
|
exit_flag = 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int main(void) {
|
||
|
struct mg_mgr mgr;
|
||
|
|
||
|
mg_mgr_init(&mgr, NULL);
|
||
|
mg_connect_http(mgr, ev_handler, url, NULL, NULL);
|
||
|
|
||
|
|
||
|
while (exit_flag == 0) {
|
||
|
mg_mgr_poll(&mgr, 1000);
|
||
|
}
|
||
|
mg_mgr_free(&mgr);
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
```
|
||
|
|
||
|
See full source code at [HTTP client example](https://github.com/cesanta/dev/tree/master/mongoose/examples/http_client).
|