mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-03 04:17:52 +08:00
104 lines
2.4 KiB
C++
104 lines
2.4 KiB
C++
// http_client2.cpp : 定义控制台应用程序的入口点。
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
|
|
static void get_url(const char* url, const char* host,
|
|
const char* addr, const char* tofile)
|
|
{
|
|
acl::http_header header;
|
|
|
|
//header.add_param("test", NULL);
|
|
header.set_method(acl::HTTP_METHOD_GET);
|
|
header.set_url(url);
|
|
header.set_content_type("text/xml; charset=utf-8");
|
|
if (header.get_host() == NULL)
|
|
{
|
|
header.set_host(host);
|
|
printf(">>>set host: %s\r\n", host);
|
|
}
|
|
else
|
|
printf(">>>host: %s\r\n", header.get_host());
|
|
header.set_keep_alive(true);
|
|
header.add_entry("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
|
|
header.add_entry("Accept", "*/*");
|
|
header.add_entry("Cache-Control", "no-cache");
|
|
header.accept_gzip(true);
|
|
|
|
acl::string buf;
|
|
|
|
header.build_request(buf);
|
|
printf("--------------------request------------------\r\n");
|
|
printf("%s\r\n", buf.c_str());
|
|
|
|
acl::http_client client;
|
|
printf("begin connect %s\r\n", addr);
|
|
if (client.open(addr, 10, 10) == false)
|
|
{
|
|
printf("open %s error\r\n", addr);
|
|
return;
|
|
}
|
|
|
|
if (client.write_head(header) == -1)
|
|
{
|
|
printf("write request header error\r\n");
|
|
return;
|
|
}
|
|
if (client.read_head() == false)
|
|
{
|
|
printf("read response header error\r\n");
|
|
return;
|
|
}
|
|
|
|
client.print_header("response header");
|
|
|
|
acl::ofstream fp;
|
|
fp.open_write(tofile);
|
|
while (true)
|
|
{
|
|
int ret = client.read_body(buf);
|
|
if (ret < 0)
|
|
{
|
|
printf("connect closed now\r\n");
|
|
break;
|
|
}
|
|
else if (ret == 0)
|
|
{
|
|
printf("over now\r\n");
|
|
break;
|
|
}
|
|
fp.write(buf);
|
|
}
|
|
}
|
|
|
|
int main(int argc, char* argv[])
|
|
{
|
|
(void) argc; (void) argv;
|
|
acl::acl_cpp_init(); // 必须先初始化
|
|
|
|
//const char* url = "http://www.sina.com.cn/";
|
|
//const char* host = "www.sina.com.cn";
|
|
//const char* addr = "www.sina.com.cn:80";
|
|
|
|
get_url("http://www.sina.com.cn/?name=value&nam2=value2", "www.sina.com.cn",
|
|
"www.sina.com.cn:80", "sina.txt");
|
|
get_url("http://www.hexun.com/", "www.hexun.com",
|
|
"www.hexun.com:80", "hexun.txt");
|
|
get_url("/", "www.hexun.com", "www.hexun.com:80", "hexun.txt");
|
|
get_url("http://www.baidu.com", "www.baidu.com",
|
|
"www.baidu.com:80", "baidu.txt");
|
|
|
|
acl::http_header header(400);
|
|
acl::string buf;
|
|
header.set_content_length(1000);
|
|
header.set_keep_alive(true);
|
|
header.add_entry("name", "value");
|
|
header.build_response(buf);
|
|
printf("[%s]\r\n", buf.c_str());
|
|
|
|
printf("enter any key to exist\r\n");
|
|
getchar();
|
|
|
|
return 0;
|
|
}
|