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

📄 httpengine.h

📁 手机天气预报系统
💻 H
字号:
#ifndef HTTPENGINE_H_
#define HTTPENGINE_H_

// INCLUDES
// System includes
#include <e32base.h>						// CBase
#include <http/MHTTPAuthenticationCallback.h>	// MHTTPAuthenticationCallback
#include <mhttpdatasupplier.h>				// MHTTPDataSupplier
#include <mhttptransactioncallback.h>		// MHTTPTransactionCallback
#include <RHTTPSession.h>					// RHTTPSession
#include <RHTTPTransaction.h>				// RHTTPTransaction
#include <ES_SOCK.H>						// RSocketServ,RConnection

class MHTTPEngineObserver
{
public:
	//! @brief 处理响应头
	//! @details 
	//! @param aStatusCode 响应头状态码
	//! @param aSessionId HTTP交互Session Id
	virtual void ResponseStatusL(TInt aStatusCode, const TDesC8& aSessionId) = 0;

	//! @brief 处理响应体
	//! @details 
	//! @param aBuffer 响应体字符串
	virtual void ResponseBodyDataL(const TDesC& aBuffer) = 0;

	//! @brief 处理HTTP响应结束
	//! @details 
	virtual void ResponseReceivedL() = 0; 
};


//! @class CQiQiHTTPEngine
//! @brief HTTP事务处理的引擎类
//! @details 
class CQiQiHTTPEngine : public CBase,
	public MHTTPTransactionCallback
{
public:
	static CQiQiHTTPEngine* NewL(MHTTPEngineObserver& aObserver);
	~CQiQiHTTPEngine();

	//! @brief 发送Get HTTP请求
	//! @details 
	//! @param aUri 请求URL
	//! @param aAccept 请求数据类型
	void GetRequestL(const TDesC& aUri, const TDesC8& aAccept);

	//! @brief 关闭所有正在运行的事务,并释放相关资源
	//! @details 
	void Cancel();

private: // from MHTTPTransactionCallback
	void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
	TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent);

private:
	CQiQiHTTPEngine(MHTTPEngineObserver& aObserver);
	void ConstructL();

	void ParseUriL(const TDesC& aUri);
	void AddHeaderL(RHTTPHeaders aHeaders, TInt aHeaderField, const TDesC8& aHeaderValue);

private:
	RSocketServ iSocketServ;
	RConnection iConnection;

	RHTTPSession iSession;
	RHTTPTransaction iTransaction;

	HBufC8* iUri;
	TUriParser8 iUriParser;

	MHTTPEngineObserver& iActive;
};

#endif /*HTTPENGINE_H_*/

⌨️ 快捷键说明

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