1#ifndef NEFORCE_NETWORK_HTTP_HTTP_CLIENT_HPP__
2#define NEFORCE_NETWORK_HTTP_HTTP_CLIENT_HPP__
17NEFORCE_BEGIN_NAMESPACE__
113 mutable mutex mutex_;
123 const string& request_path);
126 string build_cookie_header(
const url& request_url)
const;
129 bool ensure_connected(
const string& host,
ports port);
179 client_type& get_client() noexcept {
return client_; }
188 persistent_headers_[key] =
move(value);
197 persistent_headers_.erase(key);
217 config_.connect_timeout =
timeout;
218 config_.send_timeout =
timeout;
219 config_.receive_timeout =
timeout;
228 config_.proxy_host =
move(host);
229 config_.proxy_port = port;
236 config_.proxy_host.clear();
315 const string& content_type =
"application/x-www-form-urlencoded",
359 const string& content_type =
"application/x-www-form-urlencoded",
410 const string& content_type =
"application/x-www-form-urlencoded",
445 NEFORCE_NODISCARD
bool is_connected() const noexcept {
return client_.is_connected(); }
451NEFORCE_END_NAMESPACE__
void set_max_redirects(uint16_t max)
设置最大重定向次数
bool download_file(const string &url, path output, bool is_binary=true)
下载文件
void set_cookie(const http_cookie &c, const string &domain, const string &path="/")
设置Cookie
void set_error_callback(error_callback_t callback)
设置错误回调
void set_default_header(const string &key, string value)
设置默认请求头
const config & get_config() const noexcept
获取客户端配置
http_client_response del(const string &url, const unordered_map< string, string > &headers={})
发送DELETE请求
void set_verify_ssl(bool verify)
设置是否验证SSL证书
http_client_response patch(const string &url, const string &body="", const string &content_type="application/x-www-form-urlencoded", const unordered_map< string, string > &headers={})
发送PATCH请求
void set_ssl_context(ssl_context ctx)
设置SSL上下文
future< http_client_response > request_async(http_client_request req)
异步HTTP请求
http_client_response post_form(const string &url_str, const unordered_map< string, string > &form_data, const unordered_map< string, string > &headers)
发送POST表单请求
http_client_response get(const string &url, const unordered_map< string, string > &headers={})
发送GET请求
void set_proxy(string host, const ports port)
设置代理
function< void(const exception &)> error_callback_t
错误回调类型
http_client_response request(http_client_request req)
发送自定义HTTP请求
http_client_response options(const string &url, const unordered_map< string, string > &headers={})
发送OPTIONS请求
http_client_response post_json(const string &url_str, const string &json_body, const unordered_map< string, string > &headers)
发送POST JSON请求
void set_config(config cfg)
设置客户端配置
http_client(ssl_context ctx, config config)
构造函数(带SSL上下文)
http_client_response put(const string &url, const string &body="", const string &content_type="application/x-www-form-urlencoded", const unordered_map< string, string > &headers={})
发送PUT请求
NEFORCE_NODISCARD unordered_map< string, http_cookie > get_cookies() const
获取所有Cookie
void set_progress_callback(progress_callback_t callback)
设置进度回调
void set_follow_redirects(bool follow)
设置是否跟随重定向
void clear_cookies()
清空Cookie存储
http_client(config config)
构造函数
steady_clock::time_point time_point
时间点类型
http_client_response post(const string &url, const string &body="", const string &content_type="application/x-www-form-urlencoded", const unordered_map< string, string > &headers={})
发送POST请求
ssl_client client_type
底层客户端类型
const client_type & get_client() const noexcept
获取底层客户端
NEFORCE_NODISCARD bool is_connected() const noexcept
检查是否已连接
http_client_response head(const string &url, const unordered_map< string, string > &headers={})
发送HEAD请求
function< void(size_t, size_t)> progress_callback_t
进度回调类型
void remove_default_header(const string &key)
移除默认请求头
void set_timeout(milliseconds timeout)
设置统一超时时间
constexpr const T & max(const T &a, const T &b, Compare comp) noexcept(noexcept(comp(a, b)))
返回两个值中的较大者
unsigned short uint16_t
16位无符号整数类型
duration< int64_t, milli > milliseconds
毫秒持续时间
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
移动范围元素
basic_string_view< char > string_view
字符字符串视图
bool follow_redirects
是否跟随重定向
uint16_t max_redirects
最大重定向次数
milliseconds connect_timeout
连接超时
string user_agent
User-Agent
byte_size buffer_size
缓冲区大小
byte_size max_response_size
最大响应大小
milliseconds send_timeout
发送超时
unordered_map< string, string > default_headers
默认请求头
milliseconds receive_timeout
接收超时
_NEFORCE time_point< steady_clock > time_point
时间点类型