使用libcurl在android上实现webdav客户端
我想在android中实现libcurl函数。原始curl命令如下所示:使用libcurl在android上实现webdav客户端,android,curl,libcurl,webdav,Android,Curl,Libcurl,Webdav,我想在android中实现libcurl函数。原始curl命令如下所示: curl -k --user "username:password" --header "Depth: 1" --data "data" -X PROPFIND https://device_ipaddr/device_name > /tmp/AiStorageList 以下是我在android jni中的代码: CURL *curl; CURLcode res; std::string content; cu
curl -k --user "username:password" --header "Depth: 1" --data "data" -X PROPFIND https://device_ipaddr/device_name > /tmp/AiStorageList
以下是我在android jni中的代码:
CURL *curl;
CURLcode res;
std::string content;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if(curl) {
struct curl_slist *headers = NULL;
char *data="data";
headers = curl_slist_append(headers, "Depth: 1");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER,headers);
curl_easy_setopt(curl, CURLOPT_URL, "https://device_ipaddr/device_name");
curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, "username:password");
curl_easy_setopt(curl, CURLOPT_HEADER, 1);
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PROPFIND");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, Post_Response);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &content);
res = curl_easy_perform(curl);
LOGD("res: %d\n", res);
LOGD("content = %s \n", content.c_str());
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
以下是Post_响应函数:
static long Post_Response(void *data, int size, int nmemb, std::string &content)
{
long sizes = size * nmemb;
std::string temp((char*)data,sizes);
content += temp;
return sizes;
}
我总是得到res1,这意味着在执行curl\u easy\u perform时出错,并且内容也是空的。
非常感谢您的帮助。
提前谢谢。为什么要卷发?为什么是C?为什么不是java?为什么不使用ApacheHttpClient或HttpUrlConnection?我以前尝试过android webdav客户端的sardine和jackrabbit库,但遇到https问题。。。