dmphttputils.h 2.2 KB
/**************************************************************************
* 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 post(const std::string& url, std::string& postData);
        virtual int get(const std::string& url);

        virtual std::string getResponse(void) {return responseData_;}
        private:
        // 建立请求
	    void handleRequestResolve(const std::string& url, pBuildRequest func);
		void handleRequestResolve(const std::string& url, std::string& path, 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 post(const std::string& url, std::string& postData);
    std::string get(const std::string &url);
}

#endif //__dmphttpsutils_h__