hewei.it преди 4 години
родител
ревизия
7447cbf624
променени са 1 файла, в които са добавени 37 реда и са изтрити 13 реда
  1. 37 13
      examples/http_client_test.cpp

+ 37 - 13
examples/http_client_test.cpp

@@ -2,15 +2,15 @@
 
 #include "hthread.h" // import hv_gettid
 
-static void test_http_async_client(int* finished) {
+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->body = "This is an async request.";
     req->timeout = 10;
-    http_client_send_async(req, [finished](const HttpResponsePtr& resp) {
+    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");
@@ -22,7 +22,24 @@ static void test_http_async_client(int* finished) {
     });
 }
 
-static void test_http_sync_client() {
+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
@@ -38,6 +55,7 @@ static void test_http_sync_client() {
 
     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);
@@ -49,23 +67,29 @@ static void test_http_sync_client() {
     }
 }
 
-int main() {
+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;
 
-    int cnt = 1;
     for (int i = 0; i < cnt; ++i) {
-        test_http_async_client(&finished);
+        test_http_async_client(async_client, &finished);
 
-        test_http_sync_client();
+        test_http_sync_client(sync_client);
 
-        hv_delay(1000);
+        // like python requests
+        test_requests();
     }
 
-    // demo wait async ResponseCallback
-    while (!finished) {
-        hv_delay(100);
-    }
+    http_client_del(sync_client);
+    // demo wait async finished
+    while (!finished) hv_delay(100);
     printf("finished!\n");
+    http_client_del(async_client);
 
     return 0;
 }