curl在Android中使用的Demo
在Android源码环境下编译出curl.a静态库后可以放到JNI下直接使用了。
要注意的是,在Android.mk中需要这样将静态库编译到jni的动态库中。
LOCAL_PATH := $(call my-dir) #使用静态库 include $(CLEAR_VARS) LOCAL_MODULE := curl LOCAL_SRC_FILES := ./curllib/libcurl.a include $(PREBUILT_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_CFLAGS := -D_GNU_SOURCE LOCAL_CPPFLAGS := -frtti # 打算编译出的动态库的名字 LOCAL_MODULE:= jni_curl # 使用的本地静态库 LOCAL_SHARED_LIBRARIES := libcurl LOCAL_SRC_FILES := jni_main.cpp # 如果不包含这一句的话,会提示:__android_log_print 未定义 LOCAL_LDLIBS := -llog include $(BUILD_SHARED_LIBRARY)
参见NDK中的prebuild一章。
2.如果要在curl的使用过程中使用stl的c++就需要有Application.mk文件,里面的内容注释都有。
例子以www.baidu.com为例,简单使用了一下。返回的数据都能被打印出来。
CURL *curl; CURLcode res; // 接受返回的内容,用于打印出来看 std::string content; // char content[1024*20]; curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com"); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, Post_Response); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &content); res = curl_easy_perform(curl); if (0!=res) { // printf("curl error: %d\n", res); LOGD("curl error: %d\n", res); } LOGD("curl error: %d\n", res); LOGD("curl content = %s \n", content.c_str()); curl_easy_cleanup(curl); } curl_global_cleanup();
详细内容请参考Demo,附件中:
相关推荐
83911535 2020-11-13
曾是土木人 2020-10-31
yegen00 2020-10-21
soralaro 2020-10-11
katanaFlower 2020-09-18
wytzsjzly 2020-08-17
88407710 2020-08-17
ChinaJoeEE 2020-08-16
CyborgLin 2020-08-15
Blueberry 2020-08-15
PinkBean 2020-08-11
katanaFlower 2020-08-03
hunningtu 2020-07-30
阿债的方寸天地 2020-06-28
pingyan 2020-06-25
wytzsjzly 2020-06-25
阳光岛主 2020-06-25
阿债的方寸天地 2020-06-16