Curly 是为 libcurl 设计的一个高级 API,旨在简化基于内存的 HTTP 操作的常见使用场景。
如果您有一个基本的使用场景,甚至 curly_init() 函数也是可选的,并且您可以像以下这样轻松地执行 PUT 或 GET
char* data = "test";
curly_http_get("https://httpbin.org", NULL, NULL);
curly_http_put("https://httpbin.org/put/", data, strlen(data), NULL, NULL);
头操作是用 json 数组完成的,例如如下所示
char* headers = "{\"Accept\":\"text/plain\"}";
curly_http_get("https://httpbin.org", headers, NULL);
移除默认头遵循正常的 libcurl 工作方式,因此下面的示例将移除请求中的 Accept 头
char* headers = "{\"Accept\":}";
curly_http_get("https://httpbin.org", headers, NULL);
根据您的平台和需求,可以使用多种方法使用 curly。
对于 iOS,根目录中直接提供了一个 .podspec 文件,因此安装很简单。公共 CocoaPod 发布也在此发布(https://cocoapods.org.cn/pods/curly)。iOS 版本没有 OpenSSL 依赖,而是使用 DarwinSSL。
与 Android 中的原生代码一样,与 iOS 相比要复杂一些。基本上您有两个选择
将 curly 作为静态库与 libcrypto.a 和 libssl.a 一起用于您现有的动态库中,请将以下说明添加到您的 Android.mk 中(库的顺序很重要)
include $(CLEAR_VARS)
LOCAL_MODULE := curl-prebuilt
LOCAL_SRC_FILES := PATH_TO_CURLY/third-party/curl/android/$(TARGET_ARCH_ABI)/libcurl.a
include $(PREBUILT_STATIC_LIBRARY)
LOCAL_C_INCLUDES += PATH_TO_CURLY/third-party/ PATH_TO_CURLY/third-party/curl/android/include
LOCAL_STATIC_LIBRARIES += curl-prebuilt ssl-prebuilt crypto-prebuilt
请注意,如果您打算在同一个 .so 中与一个或多个项目共享 openssl 库,则不能初始化 openssl 多于一次,并且您可能会在 openssl 用户之间出现线程问题(如果您在谷歌上搜索,可以找到大量关于此的信息)。如果没有在同一个 .so 中与依赖于 openssl 的其他库共享,则没有任何问题,只需与 Android 设备上现有的加密库链接,或者最好与您自己的或第三方文件夹中找到的预编译库链接。
如果您有其他原生库并且想要添加HTTP支持,这是一个不错的选择。预构建的libcurly.so可以找到在android文件夹中,它已经封装了libcrypto、libssl和libcurl。要将它添加到现有的.so项目中,您需要将以下内容添加到您的Android.mk文件中:
include $(CLEAR_VARS)
LOCAL_MODULE := curly-prebuilt
LOCAL_SRC_FILES := PATH_TO_CURLY/third-party/curly/android/libs/$(TARGET_ARCH_ABI)/libcurly.so
include $(PREBUILT_SHARED_LIBRARY)
LOCAL_C_INCLUDES + PATH_TO_CURLY/
LOCAL_SHARED_LIBRARIES += curly-prebuilt
最简单的方法是将curly.h和curly.c添加到现有的项目中,然后将Visual Studio指向预构建的curl和openssl库(它们也在此处的第三方文件夹中提供)。
除了Google Test,还提供了预制的Visual Studio解决方案。
别忘了运行
git submodule init
git submodule update
以获取用于unittests所需的GTest子模块。
如果想要使用gtest单元测试并且Visual Studio表示gtest-md.sln文件无法转换到您的版本,您必须首先手动打开gtest-md.sln解决方案,以便可以执行转换。然后只需打开CurlyTest.sln文件,应该就可以。