| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- #pragma once
- #include "http_define.h"
- #if USE_NET_HTTP_CLIENT
- #include <functional>
- #include "http_header.h"
- #include "http_client_cache.h"
- #include "http_cookie.h"
- #include "make_form.h"
- class http_client_listener;
- namespace ylib
- {
- namespace network
- {
- namespace http
- {
- class client_plus :public ylib::error_base
- {
- public:
- client_plus();
- ~client_plus();
- void close();
- void set_timeout(uint32 connect_msec = 3000, uint32 recv_msec = 8000);
- bool del(const std::string& url, const std::map<std::string, std::string>& value = std::map<std::string, std::string>());
- bool get(const std::string& url, const std::map<std::string, std::string>& value = std::map<std::string, std::string>(), bool wait = true);
- bool post(const std::string& url, const std::map<std::string, std::string>& value, bool to_utf8 = false);
- bool post(const std::string& url, const ylib::json& value, bool to_utf8 = false);
- bool post(const std::string& url, const ylib::buffer& value);
- //bool post(const std::string& url, const http::make_form& value);
- bool head(const std::string& url);
- /// <summary>
- /// 连接代理服务器
- /// </summary>
- /// <param name="address"></param>
- /// <param name="port"></param>
- /// <returns></returns>
- void setproxy(const std::string& address,ushort port);
- network::http::header_list& headers_request();
- network::http::header_list& headers_response();
- uint32 status();
- ylib::buffer& response();
- /*设置缓存*/
- void cache(client_cache* cache);
- /*请求路径*/
- inline const std::string& url() { return m_url; }
- /*cookie*/
- inline network::http::cookie& cookie() { return m_cookie; }
- inline void cookie(const network::http::cookie& ck) { m_cookie = ck; }
- /*[回调] 正在下载*/
- void on_down_ing(const std::function<bool(void* data, uint32 downsize, uint64 alldownsize, uint64 allsize, network::http::client_plus& client)>& callback);
- /*[回调] 下载结束*/
- void on_down_end(const std::function<void(network::http::client_plus& client)>& callback);
- /*[回调] 下载失败*/
- void on_down_failed(const std::function<void(network::http::client_plus& client)>& callback);
- // 清理所有Cookie缓存
- static void clear_all_cookies();
- friend class http_client_listener;
- public:
- uint64 m_temp[10];
- private:
- bool parseurl(std::string url);
- bool connect();
- bool init();
- bool request();
- bool post(const std::string& url);
- void* client();
- bool init_proxy();
- private:
- // HP客户端
- void* m_client;
- // HP客户端-SSL
- void* m_client_ssl;
- // HP监听器
- http_client_listener* m_listener;
- // 是否已初始化
- bool m_init;
- // 连接IP
- std::string m_ipaddress;
- // 连接端口
- ushort m_port;
- // HTTPS
- bool m_ssl;
- // 请求链接
- std::string m_url;
- // 请求路径
- std::string m_path;
- // 请求方式
- std::string m_method;
- // 请求数据
- ylib::buffer m_request_body;
- // [header] 请求
- network::http::header_list m_headers_request;
- // 超时时间 连接
- timestamp m_timeout_connect_msec;
- // 超时时间 接收
- timestamp m_timeout_recv_msec;
- // 缓存
- client_cache* m_cache;
- // cookie
- network::http::cookie m_cookie;
- // 请求等待
- bool m_request_wait = true;
- #ifndef _WIN32
- public:
- #endif
- // 关闭
- bool m_close;
- // 代理服务器
- ylib::AddressPort m_proxy;
- };
- }
- }
- }
- #endif
|