HttpUtil.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef HIK_HTTPUTIL_H
  2. #define HIK_HTTPUTIL_H
  3. #if (defined(WIN32) || defined(WIN64))
  4. #ifdef HTTPUTIL_EXPORTS
  5. #define HTTPUTIL_API extern "C" _declspec(dllexport)
  6. #else
  7. #define HTTPUTIL_API extern "C" _declspec(dllimport)
  8. #endif
  9. #else // LINUX
  10. #define HTTPUTIL_API extern "C"
  11. #endif
  12. namespace httpUtil
  13. {
  14. // 状态码定义:
  15. // 0 表示成功
  16. // 10000~20000 表示具体的错误码.
  17. // 小于10000大于0 表示HTTP状态码(如404),HTTP状态码请自行查阅HTTP状态码定义
  18. const int HTTPUTIL_ERR_SUCCESS = 0; // 成功
  19. const int HTTPUTIL_ERR_BASE = 10000; // 错误码基准
  20. const int HTTPUTIL_ERR_PARAM = (HTTPUTIL_ERR_BASE + 1); // 参数错误,如传入空指针、超时时间不对
  21. const int HTTPUTIL_ERR_ALLOC_SESSION = (HTTPUTIL_ERR_BASE + 2); // HTTP请求分配session失败
  22. const int HTTPUTIL_ERR_SET_HEADER_FIELD = (HTTPUTIL_ERR_BASE + 3); // 头域设置失败
  23. const int HTTPUTIL_ERR_SEND_REQUEST = (HTTPUTIL_ERR_BASE + 4); // HTTP请求失败
  24. const int HTTPUTIL_ERR_ALLOC_MEM = (HTTPUTIL_ERR_BASE + 5); // 分配内存错误
  25. const int HTTPUTIL_ERR_GET_REDIRECT_URL = (HTTPUTIL_ERR_BASE + 6); // 获取重定向Url失败
  26. const int HTTPUTIL_ERR_OTHER = (HTTPUTIL_ERR_BASE + 10000); // 其它错误
  27. // HTTP POST
  28. // url: url
  29. // body: body
  30. // appkey: API网关提供的APPKey
  31. // secret: API网关提供的APPSecret
  32. // timeout: 秒级超时时间(内部分别使用此超时时间设置建立连接、请求发送、等待回复超时时间)
  33. // dataLen: 响应数据长度,如果确定返回的内容是字符串,可以指定NULL
  34. // return: HTTP请求响应,如果是二进制,请结合dataLen获取数据。失败返回NULL,可使用HTTPUTIL_GetLastStatus获取状态码。成功需使用HTTPUTIL_Free释放内存
  35. HTTPUTIL_API char* HTTPUTIL_Post(const char* url, const char* body, const char* appkey, const char* secret, int timeout, int* dataLen);
  36. // HTTP GET
  37. // url: url
  38. // appkey: API网关提供的APPKey
  39. // secret: API网关提供的APPSecret
  40. // timeout: 秒级超时时间(内部分别使用此超时时间设置建立连接、请求发送、等待回复超时时间)
  41. // dataLen: 响应数据长度,如果确定返回的内容是字符串,可以指定NULL
  42. // return: HTTP请求响应,如果是二进制,请结合dataLen获取数据。失败返回NULL,可使用HTTPUTIL_GetLastStatus获取状态码。成功需使用HTTPUTIL_Free释放内存
  43. HTTPUTIL_API char* HTTPUTIL_Get(const char* url, const char* appkey, const char* secret, int timeout, int* dataLen);
  44. // 释放内存
  45. // buffer: pHTTPUTIL_Get和HTTPUTIL_Post返回的非空指针
  46. HTTPUTIL_API void HTTPUTIL_Free(char* buffer);
  47. // 获取状态码,必须在调HTTPUTIL_Post或HTTPUTIL_Get所在线程中调此接口
  48. // return: 状态码, 详见HTTPUTIL_ERR_*或自行查阅HTTP状态码
  49. HTTPUTIL_API int HTTPUTIL_GetLastStatus();
  50. }
  51. #endif