コード例 #1
0
ファイル: test_client.c プロジェクト: 1514louluo/libevhtp
int
main(int argc, char ** argv) {
    evbase_t           * evbase;
    evhtp_connection_t * conn;
    evhtp_request_t    * request;

    evbase  = event_base_new();
    conn    = evhtp_connection_new(evbase, "75.126.169.52", 80);
    request = evhtp_request_new(request_cb, evbase);

    evhtp_set_hook(&request->hooks, evhtp_hook_on_read, print_data, evbase);
    evhtp_set_hook(&request->hooks, evhtp_hook_on_new_chunk, print_new_chunk_len, NULL);
    evhtp_set_hook(&request->hooks, evhtp_hook_on_chunk_complete, print_chunk_complete, NULL);
    evhtp_set_hook(&request->hooks, evhtp_hook_on_chunks_complete, print_chunks_complete, NULL);

    evhtp_headers_add_header(request->headers_out,
                             evhtp_header_new("Host", "ieatfood.net", 0, 0));
    evhtp_headers_add_header(request->headers_out,
                             evhtp_header_new("User-Agent", "libevhtp", 0, 0));
    evhtp_headers_add_header(request->headers_out,
                             evhtp_header_new("Connection", "close", 0, 0));

    evhtp_make_request(conn, request, htp_method_GET, "/");

    event_base_loop(evbase, 0);
    event_base_free(evbase);

    return 0;
}
コード例 #2
0
ファイル: test_proxy.c プロジェクト: haiwen/libevhtp
int
make_request(evbase_t         * evbase,
             evthr_t          * evthr,
             const char * const host,
             const short        port,
             const char * const path,
             evhtp_headers_t  * headers,
             evhtp_callback_cb  cb,
             void             * arg) {
    evhtp_connection_t * conn;
    evhtp_request_t    * request;

    conn         = evhtp_connection_new(evbase, host, port);
    conn->thread = evthr;
    request      = evhtp_request_new(cb, arg);

    evhtp_headers_add_header(request->headers_out,
                             evhtp_header_new("Host", "localhost", 0, 0));
    evhtp_headers_add_header(request->headers_out,
                             evhtp_header_new("User-Agent", "libevhtp", 0, 0));
    evhtp_headers_add_header(request->headers_out,
                             evhtp_header_new("Connection", "close", 0, 0));

    evhtp_headers_add_headers(request->headers_out, headers);

    printf("Making backend request...\n");
    evhtp_make_request(conn, request, htp_method_GET, path);
    printf("Ok.\n");

    return 0;
}
コード例 #3
0
ファイル: mockhttpstack.hpp プロジェクト: AiprNick/cpp-common
 static evhtp_request_t* evhtp_request(std::string path, std::string file, std::string query = "")
 {
   evhtp_request_t* req = evhtp_request_new(NULL, NULL);
   req->conn = (evhtp_connection_t*)calloc(sizeof(evhtp_connection_t), 1);
   req->uri = (evhtp_uri_t*)calloc(sizeof(evhtp_uri_t), 1);
   req->uri->path = (evhtp_path_t*)calloc(sizeof(evhtp_path_t), 1);
   req->uri->path->full = strdup((path + file).c_str());
   req->uri->path->file = strdup(file.c_str());
   req->uri->path->path = strdup(path.c_str());
   req->uri->path->match_start = (char*)calloc(1, 1);
   req->uri->path->match_end = (char*)calloc(1, 1);
   req->uri->query = evhtp_parse_query(query.c_str(), query.length());
   return req;
 }