dmphttputils.h
2.0 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/**************************************************************************
* file: dmphttputils.h
* Author: lijiahuan
* Date: 2021-12-09 17:41:00
* Email: jiahuanl@chinadci.com
* copyright: 广州城市信息研究所有限公司
***************************************************************************/
#ifndef __dmppghttputils_h__
#define __dmppghttputils_h__
#include <iostream>
#include <boost/asio.hpp>
#include "dmphttpbase.h"
namespace DmpHttp
{
class DmpHttpUtils : public DmpHttpBase
{
public:
DmpHttpUtils(boost::asio::io_service& io_service);
virtual ~DmpHttpUtils();
virtual int post(const std::string& url);
virtual int get(const std::string& url);
virtual std::string getResponse(void) {return responseData_;}
private:
// 建立请求
void handleRequestResolve(const std::string& url, pBuildRequest func);
// 解析后
void handleResolve(const boost::system::error_code& err,
boost::asio::ip::tcp::resolver::iterator endpoint_iterator);
// 连接后
void handleConnect(const boost::system::error_code& err);
// 发送请求后
void handleWriteRequest(const boost::system::error_code& err);
// 读取响应后
void handleReadStatusLine(const boost::system::error_code& err);
// 读取响应头后
void handleReadHeaders(const boost::system::error_code& err);
// 读取正文数据后
void handleReadContent(const boost::system::error_code& err);
private:
// 解析器
boost::asio::ip::tcp::resolver resolver_;
// 套接字
boost::asio::ip::tcp::socket socket_;
// 请求缓冲区
boost::asio::streambuf request_;
// 响应缓冲区
boost::asio::streambuf response_;
// 响应数据
std::string responseData_;
};
std::string post(const std::string &url);
std::string get(const std::string &url);
}
#endif //__dmphttpsutils_h__