avhttp v2.9.8 发布,HTTP 客户端开发库

jopen 11年前

avhttp是一个基于Boost.Asio实现的HTTP客户端开发工具库.

简介

它支持HTTP(1.0/1.1)、HTTPS, 断点续传, 多线程并发下载, 异步, HTTP/SOCKS4/SOCKS5代理支持等特性, 开发者可以轻松的基于这个库开发其他相关应用.

快速上手

#include <iostream>  #include <boost/array.hpp>  #include "avhttp.hpp"    int main()  {      boost::asio::io_service io;      avhttp::http_stream h(io);      boost::system::error_code ec;        // 打开url.      h.open("http://www.boost.org/LICENSE_1_0.txt", ec);      if (ec) { // 打开失败处理...          std::cout << "Error: " << ec.message() << std::endl;          return -1;      }        boost::array<char, 1024> buf;        // 循环读取数据.      while (!ec) {          std::size_t bytes_transferred = h.read_some(boost::asio::buffer(buf), ec);          // 将下载的数据打印到屏幕.          std::cout.write(buf.data(), bytes_transferred);      }        std::cout.flush();      h.close(ec); // 关闭.      io.run();        return 0;  }

OK, 上面已经展示了一个简单却功能完善的示例用于HTTP下载, 但事实上有时您需要定制自己的HTTP请求, 请继续往下看, 下面介绍HTTP参数相关的设置.

使用request_opts定制HTTP请求

boost::asio::io_service io;  avhttp::http_stream h(io);    avhttp::request_opts opt;  // 可以insert多个选项.  opt.insert("Connection", "Keep-Alive");    // 在这里设置到request_options.  h.request_options(opt);    // 然后再发起其它相关操作.  h.open("http://www.boost.org/LICENSE_1_0.txt");  // ...

avhttp::request_opts 在发起HTTP请求之前的设定HTTP选项, 它可以实现让您定制自己的http header.

使用avhttp::proxy_settings设置代理

boost::asio::io_service io;  avhttp::http_stream h(io);    avhttp::proxy_settings p;  // 这里可以设置3种代理, socks4/socks5/http, 具体可以查看avhttp::proxy_settings的声明.  p.type = avhttp::proxy_settings::http;  p.hostname = "127.0.0.1";  p.port = 8080;  h.proxy(p); // 设置代理.    // 然后再发起其它相关操作.  h.open("http://www.boost.org/LICENSE_1_0.txt");  // ...



avhttp v2.9.8 版本发布!主要改进包括:

1.增加了cookie管理。
2.基于RFC1867的HTTP文件上传功能(支持异步/同步)。
3.支持独立编译选项。
4.改善了解析HTTP DATE和修正了一些编译错误(vc/mingw平台)。
5.提供了一个实用于上传图片到http://imagebin.org的example.