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

📄 cmshttp.h

📁 wap 协议栈 包括1.2 和2.0 由c开发 基于brew平台
💻 H
字号:
/************************************************************************* 
 * Copyright (c) 2000-2003 MobileSoft Corporation All Rights Reserved.	
 * 日  期:  2004-8-18   	
 * 作  者:  滕永; yongt@mobilesoft.com.cn    	    	
 * 文  件:  cmshttp.h 	
 * 描  述:			  
 ************************************************************************/
#ifndef _CMSHTTP_H
#define _CMSHTTP_H

#ifdef __cplusplus
extern "C" {
#endif

#define CONTENT_FORWARD_YES  0// 允许转发
#define CONTENT_FORWARD_NO  1//不允许转发
#define HTTP_METHOD_GET		0
#define HTTP_METHOD_POST	1
#define HTTP_METHOD_OPTIONS	2
#define HTTP_METHOD_HEAD	3
#define HTTP_METHOD_PUT		4
#define HTTP_METHOD_DELETE	5
#define HTTP_METHOD_TRACE	6
#define HTTP_METHOD_CONNECT 7
	
/*http中定时器开关,关闭此宏则不起动定时器功能*/
#define SUPPORT_HTTP_TIMER 

/*http中定时器开关,关闭此宏则不启动TLS功能*/
#define SUPPORT_HTTP_TLS

/*mmsHttp测试功能*/
//#define TESTMMS

/*定义是否走ccproxy*/	
//#define CCPROXY

#ifdef _D_DF
/*SYNCML 开关*/
//#define SYNCML_SUPPORT
#endif

/*MULTI REQUEST LOCK,宏打开可以支持一次连接多次请求*/
#define MULTI_REQUEST_SUPPORT

/* 枚举http方法 */
typedef enum 
{
	GET_METHOD		= 0x40,	/* get method */
	POST_METHOD		= 0x60,	/* post method */
	OPTIONS_METHOD	= 0X10,	/*options method*/
	HEAD_MEHTOD		= 0X20,	/*head method*/
	CONNECT_METHOD  = 0X90  /*CONNECT method*/

}Cms_BR_HttpMethod_e;

/* 枚举url链接方式 */
typedef enum 
{
	OUTLINE_URL = 1,	/* outline url */
	INLINE_URL	= 0		/* inline url */
}Cms_BR_Url_e;

typedef enum
{
	CODING_UTF8 = 0,    /* utf8编码  */
	CODING_GB,			/* GB编码    */
	CODING_8859_1,	    /* 88591编码 */
	CODING_UNKNOW,      /* 未知编码  */
	
} Cms_EncodingType_e;
	
/* 定义链接参数 */
typedef struct _tagNetParam
{
	 char		*name;	/* 参数名称 */
	 char		*value;	/* 参数数值 */
	struct _tagNetParam	*next;	/* 下一个参数 */

}Cms_BR_NetParam_t, *Cms_BR_NetParam_Ptr;

/* 用于定义browser模拟传递给http模块的接口参数 */
typedef struct _tagHttpParam
{
	Cms_BR_HttpMethod_e	http_method;		/* http方法 */
	
	Cms_BR_Url_e			url_type;		/* 当前rul类型,是否为页内链接 */
	char				*http_url;		/* http的url内容 */
	
	char					*param;			/* 参数字符串 */
	unsigned int			param_len;		/* 参数长度 */
	
}Cms_BR_HttpPatam_t,*Cms_BR_HttpPatam_Ptr;
	
	
/*=== http下载文件类型定义 ===*/
typedef enum 
{
	CMS_HTTP_CONTENT_ML					= 0,				/*=== 标记语言 ===*/
	CMS_HTTP_TEXT_PLAIN,									/*普通文本类型*/
	CMS_HTTP_CONTENT_CSS,								/*=====CSS=========*/
	CMS_HTTP_CONTENT_HTML,								/* text/html content type */
	
	CMS_HTTP_CONTENT_GIF					= 20,			/*=== GIF ===*/
	CMS_HTTP_CONTENT_JPEG,								/*=== JPEG ===*/
	CMS_HTTP_CONTENT_WBMP,								/*=== WBMP ===*/
	CMS_HTTP_CONTENT_BMP,								/*=== BMP ===*/
	CMS_HTTP_CONTENT_PNG,								/*=== PNG ===*/
	CMS_HTTP_CONTENT_IMAGE_ZDD,							/*Download descriptor*/
	CMS_HTTP_CONTENT_IMAGE_VIS,							/*有关VIS的 mime type*/
	CMS_HTTP_CONTENT_IMAGE_DRM,							/*有关drm的 mime type*/
	CMS_HTTP_CONTENT_IMAGE_BILL,						/*计费信息*/
	CMS_HTTP_CONTENT_CHAOTEX,                           /* 动画 */
	
	CMS_HTTP_CONTENT_MIDI				= 50,			/*=== Midi ===*/
	CMS_HTTP_CONTENT_AMR,								/*=== ARM music ===*/
	CMS_HTTP_BROWSER_MUSIC_SMAF,
	CMS_HTTP_CONTENT_MP3,
	CMS_HTTP_CONTENT_MPEG4,
	CMS_HTTP_CONTENT_X_WAVE,							/*=== wave music ===*/
	

	CMS_HTTP_CONTENT_FJAD				= 100,
	CMS_HTTP_CONTENT_FJAR,
	CMS_HTTP_CONTENT_WMLSCRIPT,							/*====wmlscript===*/
	CMS_HTTP_CONTENT_WMLSCRIPTC,						/*====wmlscriptc===*/
	
	CMS_HTTP_CONTENT_DRM_MESSAGE    	= 150,			/*=====DRM MESSAGE== =======*/
	CMS_HTTP_CONTENT_DRM_CONTENT,						/*=====DRM CONTENT== =======*/
	CMS_HTTP_CONTENT_DRM_RIGHTS_XML,					/*=====DRM  版权描述文件== =======*/
	CMS_HTTP_CONTENT_DRM_RIGHTS_WBXML,				/*=====DRM  版权对象文件二进制描述== =======*/
	CMS_HTTP_CONTENT_DRM_XWAV,							/*=== audio/x-wav===*/
	
	CMS_HTTP_BROWER_SETTING_XML		= 200,			/*http provisioning xml doc*/
	CMS_HTTP_BROWER_SETTING_WBXML,						/*浏览器二进制XML文件*/
	CMS_HTTP_BROWER_BOOKMARK_SETTING_XML,				/*书签配置XML*/
	CMS_HTTP_BROWER_BOOKMARK_SETTING_WBXML,			/*书签二进制WBXML*/
	CMS_HTTP_BROWSER_SYNCML_XML,
	CMS_HTTP_BROWSER_SYNCML_WBXML,
	CMS_HTTP_CONTENT_MSVG,								/*=== Mobile SVG ===*/
	
	CMS_HTTP_CONTENT_DLING_FILE			= 253,			/*=== 下载未知类型文件 ===*/
	CMS_HTTP_CONTENT_DLING_IMG			= 254,			/*=== 下载图片标记 ===*/
	CMS_HTTP_CONTENT_DLFAILED			= 255			/*=== 下载失败的文件 ===*/
	
}Cms_ContentType_e;

typedef enum
{
	HTTP_Continue				= 100,
	HTTP_Switching_Protocols	= 101,
	HTTP_OK						= 200,
	HTTP_Created				= 201,
	HTTP_Accepted				= 202,
	HTTP_Non_Authoritative		= 203,
	HTTP_No_Content				= 204,
	HTTP_Reset_Content			= 205,
	HTTP_Partial_Content		= 206,
	HTTP_Multiple_Choices		= 300,
	HTTP_Moved_Permanently		= 301,
	HTTP_Found					= 302,
	HTTP_See_Other				= 303,
	HTTP_Not_Modified			= 304,	
	HTTP_Use_Proxy				= 305,
	HTTP_Temporary_Redirect		= 307,
	HTTP_Bad_Request			= 400,
	HTTP_Unauthorized			= 401,
	HTTP_Payment_Required		= 402,
	HTTP_Forbidden				= 403,
	HTTP_Not_Found				= 404,
	HTTP_Method_Not_Allowed		= 405,
	HTTP_Not_Acceptable			= 406,
	HTTP_Proxy_Authentication_Required = 407,
	HTTP_Request_Timeout		= 408,
	HTTP_Conflict				= 409,
	HTTP_Gone					= 410,		
	HTTP_Length_Required		= 411,
	HTTP_Precondition_Failed	= 412,
	HTTP_Request_Entity_Too_Large = 413,
	HTTP_Request_URI_Too_Long	= 414,
	HTTP_Unsupported_Media_Type = 415,
	HTTP_Requested_Range_Not_Satisfiable = 416,
	HTTP_Expectation_Failed		= 417,
	HTTP_Internal_Server_Error	= 500,
	HTTP_Not_Implemented        = 501,
	HTTP_Bad_Gateway			= 502,
	HTTP_Service_Unavailable	= 503,
	HTTP_Gateway_Timeout		= 504,
	HTTP_HTTP_Version_Not_Supported = 505,

	/*包括服务器response解析失败、
	从socket收到长度为0、
	页面太大都认为是NODATA事件,
	统一递交给浏览器一样处理*/
	HTTP_NO_DATA	,			
	/*服务器忙事件,可能的情况会包括服务器连接不上,DNS解析失败,服务器socket异常关闭*/
	HTTP_CONNECT_SERVER_FAILED,
	/*服务器暂时关闭*/
	HTTP_NO_SUCH_SERVER,
	/*下载中断失败,也就是说当正在下载造成的异常,没有正常结束*/
	HTTP_DOWNLOADING_FAILED,
	/*拨号连接GPRS失败*/
	HTTP_DIALING_FAILED,
	/*GPRS异常断开失败*/
	HTTP_GPRS_DISCONNECT,//这个是在有下载任务时发生的事件类型
	/*TIMER OUT*/
	HTTP_TIMER_OUT,
	/*内存分配严重失败*/
	HTTP_MALLOC_FAILED,
	/*socket失败*/
	HTTP_FILE_TOO_LARGE,
	HTTP_SOCKET_ERRO,
	HTTP_GPRS_CONNECTION_DISAPPEAR,//这个浏览器没有下载任务时,发生断线,无需提示
	
	HTTP_NOT_SUPPORT_CONTENT_TYPE  //浏览器不支持该类型文件的下载

} HTTP_state_code_e;

typedef enum 
{
	NORMAL_HTTP_TASK = 0,	//普通下载业务
	WTA_HTTP_TASK,			//WTA下载业务
	PUSH_HTTP_TASK,			//PUSH下载业务
	SYNCML_HTTP_TASK,			//其他下载业务
	MMS_HTTP_TASK				//彩信业务
} httpTask_e;

//http cache response data struct
typedef enum
{
	CACHE_NULL = -1,
	CACHE_PUBLIC ,
	CACHE_PRIVATE ,
	CACHE_NO_CACHE,
	CACHE_NO_STORE,
	CACHE_NO_TRANSFORM,
	CACHE_MUST_REVALIDATE,
	CACHE_PROXY_REVALIDATE,
	CACHE_MAX_AGE,
	CACHE_S_MAXAGE

} CACHE_RESPONSE_DIRECTIVE_e;
typedef struct  
{
	CACHE_RESPONSE_DIRECTIVE_e cache_response_directive_e;
	int delta_seconds;//当cache_response_directive_e为CACHE_MAX_AGE或者CACHE_S_MAXAGE
							//时才能读取delta_seconds值
} CACHE_RESPONSE_DIRECTIVE_s;


/* 用于定义http模块返回的数据 */
typedef struct _tagHttpData
{	
	Cms_ContentType_e	content_type;		/* http数据content type */
	Cms_EncodingType_e    coding_type;      /* http数据content 编码类型 */	
	 int				content_len;		/* http数据长度 */
	 unsigned char		*content_buf;		/* http数据buf */	 
	 HTTP_state_code_e	status_code;		/* server 应答状态*/	 
	 char				*backUrl;           /*返回URL地址给上层调用*/
	 CACHE_RESPONSE_DIRECTIVE_s cache_response_directive;/*返回cache info*/
}Cms_BR_HttpData_t, *Cms_BR_HttpData_Ptr;


void Cms_BR_Access_HttpData( Cms_BR_HttpData_Ptr http_data );
typedef void (*Cms_BR_HttpCallBack_t)( Cms_BR_HttpData_Ptr http_data );

int DiscardHttpCurrentDownLoadTask(void);
extern char *getDownLoadContentType(void);

#ifdef __cplusplus
};
#endif

#endif

⌨️ 快捷键说明

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