avhttp C++语言的HTTP开发包

程序名称:avhttp

授权协议: Boost License

操作系统: 跨平台

开发语言: C/C++

avhttp 介绍

avhttp

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 官网

https://github.com/avplayer/avhttp

相关编程语言

BlazeDS 是一个基于服务器的Java 远程控制(remoting...
OVal 是一个可扩展的Java对象数据验证框架,验证的规...
Volta 是一套开发工具,专为开发分布式、实时系统应...
OpenDDS 是一个开源的 C++ 实现的 对象管理组织 OMG...
JADE (Java Agent DEvelopment Framework) 是一个完...
FastMM ,在D2006和2007中已代替了原来的内存管理器。