android jni 调用 libcurl

来源:互联网 发布:windows xp好还是7好 编辑:程序博客网 时间:2024/04/28 22:59

在JNI下新建目录header

拷贝libcurl 头文件到header 中



新建目录prebuilt 存放 libcurl.so



这里用到了其他库 所以一起放在下面 建立Android.mk 文件

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := database_sqlcipherLOCAL_SRC_FILES := libdatabase_sqlcipher.soinclude $(PREBUILT_SHARED_LIBRARY)include $(CLEAR_VARS)LOCAL_MODULE := sqlcipher_androidLOCAL_SRC_FILES := libsqlcipher_android.soinclude $(PREBUILT_SHARED_LIBRARY)include $(CLEAR_VARS)LOCAL_MODULE := stlport_sharedLOCAL_SRC_FILES := libstlport_shared.soinclude $(PREBUILT_SHARED_LIBRARY)include $(CLEAR_VARS)LOCAL_MODULE := curlLOCAL_SRC_FILES := libcurl.soinclude $(PREBUILT_SHARED_LIBRARY)

回到jni目录下 编辑Android.mk

 

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE    := InfoClientLOCAL_SRC_FILES := InfoClient.cppLOCAL_LDLIBS   += -L$(SYSROOT)/usr/lib -llogLOCAL_SHARED_LIBRARIES += libcurlLOCAL_C_INCLUDES += $(LOCAL_PATH)/header/include $(BUILD_SHARED_LIBRARY)include $(LOCAL_PATH)/prebuilt/Android.mk

这样在编译时 库文件自动拷贝到 libs/armeabi/下


使用时 只需要在cpp文件中 加入#include "header/curl.h"

int http_post_file(const char *url, const char *filepath){CURLcode res;CURL *curl = curl_easy_init();if(curl == NULL){return -1;}struct curl_httppost *post=NULL;struct curl_httppost *last=NULL;struct curl_slist *headerlist=NULL;if(filepath == NULL || url == NULL)return -1;if( curl_formadd(&post, &last, CURLFORM_COPYNAME, "upfile",CURLFORM_FILE, filepath,CURLFORM_CONTENTTYPE, "application/octet-stream",CURLFORM_END) != 0){curl_formfree(post);return -1;}curl_easy_setopt(curl, CURLOPT_URL, url); /*Set URL*/curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);res = curl_easy_perform(curl);if(res != CURLE_OK){curl_formfree(post);return -1;}curl_easy_cleanup(curl);curl_formfree(post);return 1;}


OK!

0 0
原创粉丝点击