1

こんばんは、

Android プロジェクトの 1 つに libCurl を実装する必要があります。JNI を使用して、libCurl コードで c++ クラスを呼び出します。すべてが完璧に機能しますが、神への愛のために、https URLを使用して機能させることはできません。私はいつも CURLE_UNSUPPORTED_PROTOCOL エラーを受け取ります。

SSLでこのビルド前のcurlライブラリを使用して います

私の 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 を使用すると問題なく動作します。

どんな助けでも本当に感謝しています!!

4

2 に答える 2

1

libcurl エラーのマンページから:

   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()(manpage hereSSL ) をテストして、サポートが含まれているかどうかを確認してください。ライブラリのドキュメントにはSSLサポートがあると記載されている場合がありますが、確認してください。SSLサポートが含まれていない場合は、いいえhttps

于 2013-07-26T06:20:56.113 に答える
0

「--with-ssl」を指定してlibcurl.soをコンパイルする必要があります

これは本当に苦しんでいます。「 http://ieroot.com/2015/03/29/1728.html 」を参照すると、役立つ場合があります。

于 2015-04-02T09:23:42.647 に答える