| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | #ifndef HIK_HTTPUTIL_H#define HIK_HTTPUTIL_H#if (defined(WIN32) || defined(WIN64))	#ifdef HTTPUTIL_EXPORTS		#define HTTPUTIL_API extern "C" _declspec(dllexport)	#else		#define HTTPUTIL_API extern "C" _declspec(dllimport)	#endif#else  // LINUX	#define HTTPUTIL_API extern "C"#endifnamespace httpUtil{	// ״̬Â붨Òå: 	// 0 ±íʾ³É¹¦	// 10000~20000 ±íʾ¾ßÌåµÄ´íÎóÂë. 	// СÓÚ10000´óÓÚ0 ±íʾHTTP״̬Â루Èç404£©£¬HTTP״̬ÂëÇë×ÔÐвéÔÄHTTP״̬Â붨Òå	const int  HTTPUTIL_ERR_SUCCESS = 0;                                   // ³É¹¦	const int  HTTPUTIL_ERR_BASE = 10000;                                  // ´íÎóÂë»ù×¼	const int  HTTPUTIL_ERR_PARAM = (HTTPUTIL_ERR_BASE + 1);               // ²ÎÊý´íÎó£¬Èç´«Èë¿ÕÖ¸Õë¡¢³¬Ê±Ê±¼ä²»¶Ô	const int  HTTPUTIL_ERR_ALLOC_SESSION = (HTTPUTIL_ERR_BASE + 2);       // HTTPÇëÇó·ÖÅäsessionʧ°Ü	const int  HTTPUTIL_ERR_SET_HEADER_FIELD = (HTTPUTIL_ERR_BASE + 3);    // Í·ÓòÉèÖÃʧ°Ü	const int  HTTPUTIL_ERR_SEND_REQUEST = (HTTPUTIL_ERR_BASE + 4);        // HTTPÇëÇóʧ°Ü	const int  HTTPUTIL_ERR_ALLOC_MEM = (HTTPUTIL_ERR_BASE + 5);           // ·ÖÅäÄÚ´æ´íÎó	const int  HTTPUTIL_ERR_GET_REDIRECT_URL = (HTTPUTIL_ERR_BASE + 6);    // »ñÈ¡ÖØ¶¨ÏòUrlʧ°Ü	const int  HTTPUTIL_ERR_OTHER = (HTTPUTIL_ERR_BASE + 10000);           // ÆäËü´íÎó	// HTTP POST	// url: url	// body: body	// appkey: APIÍø¹ØÌṩµÄAPPKey	// secret: APIÍø¹ØÌṩµÄAPPSecret	// timeout: Ãë¼¶³¬Ê±Ê±¼ä£¨ÄÚ²¿·Ö±ðʹÓô˳¬Ê±Ê±¼äÉèÖý¨Á¢Á¬½Ó¡¢ÇëÇó·¢ËÍ¡¢µÈ´ý»Ø¸´³¬Ê±Ê±¼ä£©	// dataLen: ÏìÓ¦Êý¾Ý³¤¶È£¬Èç¹ûÈ·¶¨·µ»ØµÄÄÚÈÝÊÇ×Ö·û´®£¬¿ÉÒÔÖ¸¶¨NULL	// return: HTTPÇëÇóÏìÓ¦£¬Èç¹ûÊǶþ½øÖÆ£¬Çë½áºÏdataLen»ñÈ¡Êý¾Ý¡£Ê§°Ü·µ»ØNULL£¬¿ÉʹÓÃHTTPUTIL_GetLastStatus»ñȡ״̬Âë¡£³É¹¦ÐèʹÓÃHTTPUTIL_FreeÊÍ·ÅÄÚ´æ	HTTPUTIL_API char* HTTPUTIL_Post(const char* url, const char* body, const char* appkey, const char* secret, int timeout, int* dataLen);	// HTTP GET	// url: url	// appkey: APIÍø¹ØÌṩµÄAPPKey	// secret: APIÍø¹ØÌṩµÄAPPSecret	// timeout: Ãë¼¶³¬Ê±Ê±¼ä£¨ÄÚ²¿·Ö±ðʹÓô˳¬Ê±Ê±¼äÉèÖý¨Á¢Á¬½Ó¡¢ÇëÇó·¢ËÍ¡¢µÈ´ý»Ø¸´³¬Ê±Ê±¼ä£©	// dataLen: ÏìÓ¦Êý¾Ý³¤¶È£¬Èç¹ûÈ·¶¨·µ»ØµÄÄÚÈÝÊÇ×Ö·û´®£¬¿ÉÒÔÖ¸¶¨NULL	// return: HTTPÇëÇóÏìÓ¦£¬Èç¹ûÊǶþ½øÖÆ£¬Çë½áºÏdataLen»ñÈ¡Êý¾Ý¡£Ê§°Ü·µ»ØNULL£¬¿ÉʹÓÃHTTPUTIL_GetLastStatus»ñȡ״̬Âë¡£³É¹¦ÐèʹÓÃHTTPUTIL_FreeÊÍ·ÅÄÚ´æ	HTTPUTIL_API char* HTTPUTIL_Get(const char* url, const char* appkey, const char* secret, int timeout, int* dataLen);	// ÊÍ·ÅÄÚ´æ	// buffer: pHTTPUTIL_GetºÍHTTPUTIL_Post·µ»ØµÄ·Ç¿ÕÖ¸Õë	HTTPUTIL_API void HTTPUTIL_Free(char* buffer);	// »ñȡ״̬Â룬±ØÐëÔÚµ÷HTTPUTIL_Post»òHTTPUTIL_GetËùÔÚÏß³ÌÖе÷´Ë½Ó¿Ú	// return: ״̬Âë, Ïê¼ûHTTPUTIL_ERR_*»ò×ÔÐвéÔÄHTTP״̬Âë	HTTPUTIL_API int HTTPUTIL_GetLastStatus();	// HTTP POST	// url: url	// body: body	// appkey: APIÍø¹ØÌṩµÄAPPKey	// secret: APIÍø¹ØÌṩµÄAPPSecret	// timeout: Ãë¼¶³¬Ê±Ê±¼ä£¨ÄÚ²¿·Ö±ðʹÓô˳¬Ê±Ê±¼äÉèÖý¨Á¢Á¬½Ó¡¢ÇëÇó·¢ËÍ¡¢µÈ´ý»Ø¸´³¬Ê±Ê±¼ä£©	// dataLen: ÏìÓ¦Êý¾Ý³¤¶È£¬Èç¹ûÈ·¶¨·µ»ØµÄÄÚÈÝÊÇ×Ö·û´®£¬¿ÉÒÔÖ¸¶¨NULL	// language: ÓïÑÔ»·¾³£¬¿ÉÑ¡zh_CN£¨ÖÐÎÄ£©en_US£¨Ó¢ÎÄ£©	// return: HTTPÇëÇóÏìÓ¦£¬Èç¹ûÊǶþ½øÖÆ£¬Çë½áºÏdataLen»ñÈ¡Êý¾Ý¡£Ê§°Ü·µ»ØNULL£¬¿ÉʹÓÃHTTPUTIL_GetLastStatus»ñȡ״̬Âë¡£³É¹¦ÐèʹÓÃHTTPUTIL_FreeÊÍ·ÅÄÚ´æ	HTTPUTIL_API char* HTTPUTIL_PostWithLanguage(const char* url, const char* body, const char* appkey, const char* secret, int timeout, int* dataLen, const char* language = "zh_CN");	// HTTP GET	// url: url	// appkey: APIÍø¹ØÌṩµÄAPPKey	// secret: APIÍø¹ØÌṩµÄAPPSecret	// timeout: Ãë¼¶³¬Ê±Ê±¼ä£¨ÄÚ²¿·Ö±ðʹÓô˳¬Ê±Ê±¼äÉèÖý¨Á¢Á¬½Ó¡¢ÇëÇó·¢ËÍ¡¢µÈ´ý»Ø¸´³¬Ê±Ê±¼ä£©	// dataLen: ÏìÓ¦Êý¾Ý³¤¶È£¬Èç¹ûÈ·¶¨·µ»ØµÄÄÚÈÝÊÇ×Ö·û´®£¬¿ÉÒÔÖ¸¶¨NULL	// language: ÓïÑÔ»·¾³£¬¿ÉÑ¡zh_CN£¨ÖÐÎÄ£©en_US£¨Ó¢ÎÄ£©	// return: HTTPÇëÇóÏìÓ¦£¬Èç¹ûÊǶþ½øÖÆ£¬Çë½áºÏdataLen»ñÈ¡Êý¾Ý¡£Ê§°Ü·µ»ØNULL£¬¿ÉʹÓÃHTTPUTIL_GetLastStatus»ñȡ״̬Âë¡£³É¹¦ÐèʹÓÃHTTPUTIL_FreeÊÍ·ÅÄÚ´æ	HTTPUTIL_API char* HTTPUTIL_GetWithLanguage(const char* url, const char* appkey, const char* secret, int timeout, int* dataLen, const char* language = "zh_CN");}#endif
 |