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; }
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; }
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; }