晚上好,
我需要将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工作得很好。
真正感谢任何帮助!!
答案 0 :(得分:1)
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”,可能对您有帮助。