#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" #endif namespace 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