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,附件中:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值