Android和libCurl https

时间:2013-07-26 05:00:20

标签: android android-ndk libcurl

晚上好,

我需要将libCurl实现到我们的一个Android项目中。我使用JNI用libCurl代码调用c ++类。一切都很完美,但对于上帝的爱,我无法使用https网址。 我总是得到CURLE_UNSUPPORTED_PROTOCOL错误。

我正在使用 使用SSL的this prebuild curl library

我的c ++代码如下所示:

curl_easy_setopt(curl, CURLOPT_URL, "https://www.es....");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0);
curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, (void *)&cbProgress);
curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progress_func);
curl_easy_setopt(curl, CURLOPT_SSLVERSION, 3);

status = curl_easy_perform(curl);

我在iOS上使用相同的代码,它可以与https一起使用。 再次,使用http url工作得很好。

真正感谢任何帮助!!

2 个答案:

答案 0 :(得分:1)

来自libcurl errors manpage

   CURLE_UNSUPPORTED_PROTOCOL (1)
          The URL you passed to libcurl used a protocol that this  libcurl
          does  not  support.  The  support might be a compile-time option
          that you didn't use, it can be a misspelled protocol  string  or
          just a protocol libcurl has no code for.

compile-time option是这方面的重要内容。因此,请使用curl_version_info()(联机帮助页here)测试您正在使用的库,看它是否包含SSL支持。图书馆文档可能会说它有SSL支持,但请确认。如果它不包含SSL支持,则不会https

答案 1 :(得分:0)

您需要使用“--with-ssl”

编译libcurl.so

这真的很痛苦。请参阅“http://ieroot.com/2015/03/29/1728.html”,可能对您有帮助。