⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpengine.cpp

📁 一个HTTP协议的封装类
💻 CPP
字号:
#include "StdAfx.h"
#include ".\httpengine.h"

CHttpEngine::CHttpEngine(MHTTPResponseObserver& aResponseObserver)
:iSession(*this),iResponseObserver(aResponseObserver)
{
	iSession.Open();
}

CHttpEngine::~CHttpEngine(void)
{
}

bool CHttpEngine::GetRequestL( const char* aUrl )
{
	//解析url
	bool ret=iUrlParser.Parse(aUrl);
	if (!ret)
	{
		return false;
	}

	//连接
	ret=iSession.Connect(iUrlParser.Host(),iUrlParser.Port());
	if (!ret)
	{
		return false;
	}
	
	//设置请求信息
	iHttpMsg.SetUri(iUrlParser.Uri());
	iHttpMsg.SetHost(iUrlParser.Host());
	iHttpMsg.AddContent(iUrlParser.Body());

	string msg;
	iHttpMsg.Ptr(msg);

	//启动接收线程
	iSession.Start();

	//发送请求
	iSession.Send(msg.c_str());

	return true;
}

bool CHttpEngine::PostRequestL( const char* aUrl)
{
	//解析url
	bool ret=iUrlParser.Parse(aUrl);
	if (!ret)
	{
		return false;
	}

	//连接
	ret=iSession.Connect(iUrlParser.Host(),iUrlParser.Port());
	if (!ret)
	{
		return false;
	}

	//设置请求信息
	iHttpMsg.SetMethod(HTTP::EPOST);
	iHttpMsg.SetUri(iUrlParser.Uri());
	iHttpMsg.SetHost(iUrlParser.Host());

	string msg;
	iHttpMsg.Ptr(msg);

	//启动接收线程
	iSession.Start();

	//发送请求
	iSession.Send(msg.c_str());

	return true;
}

void CHttpEngine::AddRequestField( const char* aFieldName,const char* aValue )
{
	iHttpMsg.AddField(aFieldName,aValue);
}

void CHttpEngine::AddRequestContent( const char* aContent )
{
	iHttpMsg.AddContent(aContent);
}

void CHttpEngine::MHFRunL( const char* pBuf,int length )
{
	//此处解析HTTP响应
	iResponseMsg.Parse(pBuf,length);

	iResponseObserver.MHTTPRequestCallBack(iResponseMsg);

	//打印测试
	/*printf("status:%d\n",iResponseMsg.Status());
	string str;
	iResponseMsg.HeaderStr(str);
	printf("header:\n%s\n",str.c_str());
	printf("body:%s\n",iResponseMsg.Body());*/

	printf("%s\n,length:%d\n",pBuf,length);
}

void CHttpEngine::AddHeader( THTTP aHeader,const char* aValue )
{
	iHttpMsg.AddHeader(aHeader,aValue);
}

void CHttpEngine::AddHeader( THTTP aHeader,THTTP aValue )
{
	iHttpMsg.AddHeader(aHeader,aValue);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -