// http_servlet.cpp : 定义控制台应用程序的入口点。 // #include <assert.h> #include <getopt.h> #include "acl_cpp/lib_acl.hpp" using namespace acl; ////////////////////////////////////////////////////////////////////////// class http_request_test { public: http_request_test(const char* server_addr, const char* stype, const char* charset) { server_addr_= server_addr; stype_ = stype; charset_ = charset; to_charset_ = "gb2312"; } ~http_request_test() {} bool run(void) { http_request req(server_addr_); // 添加 HTTP 请求头字段 string ctype("text/"); ctype << stype_ << "; charset=" << charset_; http_header& hdr = req.request_header(); // 请求头对象的引用 hdr.set_url("/"); hdr.set_content_type(ctype); // 发送 HTTP 请求数据 if (req.request(NULL, 0) == false) { logger_error("send http request to %s error", server_addr_.c_str()); return false; } acl::string line; while (true) { if (req.body_gets(line) == false) break; printf(">>>[%s], len: %d\r\n", line.c_str(), (int) line.size()); line.clear(); } if (req.body_gets(line)) printf(">>last data: %s\r\n", line.c_str()); return true; } private: string server_addr_; // web 服务器地址 string stype_; // 请求数据的子数据类型 string charset_; // 本地请求数据文件的字符集 string to_charset_; // 将服务器响应数据转为本地字符集 }; ////////////////////////////////////////////////////////////////////////// static void usage(const char* procname) { printf("usage: %s -h[help] -s server_addr\r\n", procname); } int main(int argc, char* argv[]) { int ch; string server_addr("127.0.0.1:8888"); string stype("html"), charset("gb2312"); while ((ch = getopt(argc, argv, "hs:")) > 0) { switch (ch) { case 'h': usage(argv[0]); return 0; case 's': server_addr = optarg; break; default: usage(argv[0]); return 0; } } // 开始运行 log::stdout_open(true); http_request_test test(server_addr, stype, charset); test.run(); return 0; }