diff --git a/test_http_client/Makefile b/test_http_client/Makefile
new file mode 100644
index 0000000..d3201e8
--- /dev/null
+++ b/test_http_client/Makefile
@@ -0,0 +1,2 @@
+test_http_client: test_http_client.cpp
+ g++ $^ -o $@ -levent
\ No newline at end of file
diff --git a/test_http_client/first_libevent.vcxproj b/test_http_client/first_libevent.vcxproj
new file mode 100644
index 0000000..81fc288
--- /dev/null
+++ b/test_http_client/first_libevent.vcxproj
@@ -0,0 +1,162 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 15.0
+ {129BF326-BFEE-4F1C-920C-0C302BB84895}
+ Win32Proj
+ firstlibevent
+ 10.0.17763.0
+ test_http_client
+
+
+
+ Application
+ true
+ v141
+ Unicode
+
+
+ Application
+ false
+ v141
+ true
+ Unicode
+
+
+ Application
+ true
+ v141
+ Unicode
+
+
+ Application
+ false
+ v141
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+ true
+
+
+ false
+
+
+ false
+
+
+
+
+
+ Level3
+ Disabled
+ true
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ true
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ ..\..\include
+
+
+ Console
+ true
+ ..\..\lib
+ libevent.lib;ws2_32.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+
+
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test_http_client/test_event_client.sln b/test_http_client/test_event_client.sln
new file mode 100644
index 0000000..5111269
--- /dev/null
+++ b/test_http_client/test_event_client.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.28307.1525
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "first_libevent", "first_libevent.vcxproj", "{129BF326-BFEE-4F1C-920C-0C302BB84895}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {129BF326-BFEE-4F1C-920C-0C302BB84895}.Debug|x64.ActiveCfg = Debug|x64
+ {129BF326-BFEE-4F1C-920C-0C302BB84895}.Debug|x64.Build.0 = Debug|x64
+ {129BF326-BFEE-4F1C-920C-0C302BB84895}.Debug|x86.ActiveCfg = Debug|Win32
+ {129BF326-BFEE-4F1C-920C-0C302BB84895}.Debug|x86.Build.0 = Debug|Win32
+ {129BF326-BFEE-4F1C-920C-0C302BB84895}.Release|x64.ActiveCfg = Release|x64
+ {129BF326-BFEE-4F1C-920C-0C302BB84895}.Release|x64.Build.0 = Release|x64
+ {129BF326-BFEE-4F1C-920C-0C302BB84895}.Release|x86.ActiveCfg = Release|Win32
+ {129BF326-BFEE-4F1C-920C-0C302BB84895}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {191D7F93-7554-493B-92E1-BB302C5A8383}
+ EndGlobalSection
+EndGlobal
diff --git a/test_http_client/test_http_client.cpp b/test_http_client/test_http_client.cpp
new file mode 100644
index 0000000..1fa3379
--- /dev/null
+++ b/test_http_client/test_http_client.cpp
@@ -0,0 +1,130 @@
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#ifndef _WIN32
+#include
+#endif // !_WIN32
+
+
+using namespace std;
+
+
+void http_client_cb(struct evhttp_request *req, void *ctx) {
+ cout << "http_client_cb" << endl;
+ bufferevent *bev = (bufferevent*)ctx;
+ if (req == NULL) {
+ int errcode = EVUTIL_SOCKET_ERROR();
+ cout << "socket error: " << evutil_socket_error_to_string(errcode) << endl;
+ return;
+ }
+
+ //获取path
+ const char* path = evhttp_request_get_uri(req);
+ cout << "request path is " << path << endl;
+
+ //获取返回的code
+ cout << "Respone: " << evhttp_request_get_response_code(req);
+ cout << "" << evhttp_request_get_response_code_line(req) << endl;
+ char buf[1024] = { 0 };
+ evbuffer *input = evhttp_request_get_input_buffer(req);
+ for (;;) {
+ int len = evbuffer_remove(input,buf,sizeof(buf)-1);
+ if(len <=0 )
+ buf[len] = 0;
+ }
+}
+
+
+int main()
+{
+#ifdef _WIN32
+ //初始化socket库
+ WSADATA wsa;
+ WSAStartup(MAKEWORD(2, 2), &wsa);
+#else
+ if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) { //忽略管道信号,发送数据给已关闭的socket,会飞掉!
+ return 1;
+ }
+#endif
+
+ //创建libevent上下文
+ event_base* base = event_base_new();
+
+ // 生成请求信息 GET
+ //string http_url = "http://www.pyfup.com/index.html?id=1";
+ string http_url = "http://121.4.70.4:3000//index.html?id=1"; //地址 自己换着测试
+
+ evhttp_uri *uri = evhttp_uri_parse(http_url.c_str());
+ const char* schemo = evhttp_uri_get_scheme(uri);
+ if (!schemo) {
+ cerr << "schemo is null" << endl;
+ return -1;
+ }
+ cout << "schemo is " << schemo << endl;
+
+ int port = evhttp_uri_get_port(uri);
+ if (port < 0) {
+ if (strcmp(schemo, "http") == 0)
+ port = 80;
+ }
+
+ cout << "host is " << port << endl;
+
+ const char* host = evhttp_uri_get_host(uri);
+ if (!host) {
+ cerr << "host is null" << endl;
+ return -1;
+ }
+
+ cout << "host is " << host << endl;
+ const char *path = evhttp_uri_get_path(uri);
+ if (!path || strlen(path) == 0) {
+ path = "/";
+ }
+ cout << "path is " << path << endl;
+
+
+
+ //?号之后的内容
+ const char* query = evhttp_uri_get_query(uri);
+ if (query) {
+ cout << "query is " << query << endl;
+ }
+
+
+ bufferevent *bev = bufferevent_socket_new(base, -1, BEV_OPT_CLOSE_ON_FREE);
+ evhttp_connection *evcon = evhttp_connection_base_bufferevent_new(base, NULL, bev, host, port);
+ evhttp_request *req = evhttp_request_new(http_client_cb, bev);
+
+ //设置请求的head 消息报头 信息
+ struct evkeyvalq*out_put_headers = evhttp_request_get_output_headers(req);
+ evhttp_add_header(out_put_headers, "Host", host);
+
+ //发起请求
+ evhttp_make_request(evcon, req, EVHTTP_REQ_GET, path);
+
+
+
+
+ if (base)
+ event_base_dispatch(base); //事件分发处理
+
+ if (base)
+ event_base_free(base);
+
+#if _WIN32
+ WSACleanup();
+#endif // _WIN32
+
+
+
+ return 0;
+}
+
+