1 Star 0 Fork 270

hellocder / libhv

forked from libhv / libhv 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
http_client_test.cpp 2.82 KB
一键复制 编辑 原始数据 按行查看 历史
hewei.it 提交于 2021-04-27 20:28 . more http client usage
#include "requests.h"
#include "hthread.h" // import hv_gettid
static void test_http_async_client(http_client_t* cli, int* finished) {
printf("test_http_async_client request thread tid=%ld\n", hv_gettid());
HttpRequestPtr req(new HttpRequest);
req->method = HTTP_POST;
req->url = "127.0.0.1:8080/echo";
req->headers["Connection"] = "keep-alive";
req->body = "This is an async request.";
req->timeout = 10;
http_client_send_async(cli, req, [finished](const HttpResponsePtr& resp) {
printf("test_http_async_client response thread tid=%ld\n", hv_gettid());
if (resp == NULL) {
printf("request failed!\n");
} else {
printf("%d %s\r\n", resp->status_code, resp->status_message());
printf("%s\n", resp->body.c_str());
}
*finished = 1;
});
}
static void test_http_sync_client(http_client_t* cli) {
HttpRequest req;
req.method = HTTP_POST;
req.url = "127.0.0.1:8080/echo";
req.headers["Connection"] = "keep-alive";
req.body = "This is a sync request.";
req.timeout = 10;
HttpResponse resp;
int ret = http_client_send(cli, &req, &resp);
if (ret != 0) {
printf("request failed!\n");
} else {
printf("%d %s\r\n", resp.status_code, resp.status_message());
printf("%s\n", resp.body.c_str());
}
}
static void test_requests() {
// auto resp = requests::get("http://www.example.com");
//
// make clean && make WITH_OPENSSL=yes
// auto resp = requests::get("https://www.baidu.com");
auto resp = requests::get("http://127.0.0.1:8080/ping");
if (resp == NULL) {
printf("request failed!\n");
} else {
printf("%d %s\r\n", resp->status_code, resp->status_message());
printf("%s\n", resp->body.c_str());
}
hv::Json jroot;
jroot["user"] = "admin";
jroot["pswd"] = "123456";
http_headers headers;
headers["Content-Type"] = "application/json";
resp = requests::post("127.0.0.1:8080/echo", jroot.dump(), headers);
if (resp == NULL) {
printf("request failed!\n");
} else {
printf("%d %s\r\n", resp->status_code, resp->status_message());
printf("%s\n", resp->body.c_str());
}
}
int main(int argc, char* argv[]) {
int cnt = 0;
if (argc > 1) cnt = atoi(argv[1]);
if (cnt == 0) cnt = 1;
http_client_t* sync_client = http_client_new();
http_client_t* async_client = http_client_new();
int finished = 0;
for (int i = 0; i < cnt; ++i) {
test_http_async_client(async_client, &finished);
test_http_sync_client(sync_client);
// like python requests
test_requests();
}
http_client_del(sync_client);
// demo wait async finished
while (!finished) hv_delay(100);
printf("finished!\n");
http_client_del(async_client);
return 0;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/bkmsoft/libhv.git
git@gitee.com:bkmsoft/libhv.git
bkmsoft
libhv
libhv
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891