<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          avhttpC++語言的HTTP開發(fā)包

          聯(lián)合創(chuàng)作 · 2023-09-29 09:32

          avhttp Build Status

          avhttp是一個基于Boost.Asio實(shí)現(xiàn)的HTTP客戶端開發(fā)工具庫.

          簡介

          它支持HTTP(1.0/1.1)、HTTPS, 斷點(diǎn)續(xù)傳, 多線程并發(fā)下載, 異步, HTTP/SOCKS4/SOCKS5代理支持等特性, 開發(fā)者可以輕松的基于這個庫開發(fā)其他相關(guān)應(yīng)用.

          快速上手

          #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;
          
              // 循環(huán)讀取數(shù)據(jù).
              while (!ec) {
                  std::size_t bytes_transferred = h.read_some(boost::asio::buffer(buf), ec);
                  // 將下載的數(shù)據(jù)打印到屏幕.
                  std::cout.write(buf.data(), bytes_transferred);
              }
          
              std::cout.flush();
              h.close(ec); // 關(guān)閉.
              io.run();
          
              return 0;
          }

          OK, 上面已經(jīng)展示了一個簡單卻功能完善的示例用于HTTP下載, 但事實(shí)上有時您需要定制自己的HTTP請求, 請繼續(xù)往下看, 下面介紹HTTP參數(shù)相關(guān)的設(shè)置.

          使用request_opts定制HTTP請求

          boost::asio::io_service io;
          avhttp::http_stream h(io);
          
          avhttp::request_opts opt;
          // 可以insert多個選項(xiàng).
          opt.insert("Connection", "Keep-Alive");
          
          // 在這里設(shè)置到request_options.
          h.request_options(opt);
          
          // 然后再發(fā)起其它相關(guān)操作.
          h.open("http://www.boost.org/LICENSE_1_0.txt");
          // ...

          avhttp::request_opts 在發(fā)起HTTP請求之前的設(shè)定HTTP選項(xiàng), 它可以實(shí)現(xiàn)讓您定制自己的http header.

          使用avhttp::proxy_settings設(shè)置代理

          boost::asio::io_service io;
          avhttp::http_stream h(io);
          
          avhttp::proxy_settings p;
          // 這里可以設(shè)置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); // 設(shè)置代理.
          
          // 然后再發(fā)起其它相關(guān)操作.
          h.open("http://www.boost.org/LICENSE_1_0.txt");
          // ...
          常用問題

          • 如果需要支持https, 它依賴openssl, 請自行編譯openssl或到 http://sourceforge.net/projects/avplayer/files/develop/OpenSSL-dev/ 下載已經(jīng)編譯好的ssl開發(fā)包, 并在項(xiàng)目中設(shè)置, 啟用AVHTTP_ENABLE_OPENSSL.
          • 如果需要支持gzip, 它依賴zlib, 需要在項(xiàng)目中啟用AVHTTP_ENABLE_ZLIB, 當(dāng)然您還需要使用avhttp::request_opts指定相應(yīng)Accept-Encoding.
          • 如果您還有其它任何問題, 請加QQ群:3597082或IRC #avplayer @ irc.freenode.net, 或直接mailto: [email protected].
          瀏覽 34
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天拍,天天射,天天撸 | 天堂在线免费视屏 | 国产高清免费视频在线观看一区 | 九九九在线 | 亚洲欧洲中文日韩免费视频一区二区 |