0

libcurlライブラリを使用してコードをfirebaseに接続し、このような機能を持つデータを読み取りたい

static size_t my_write(void* buffer, size_t size, size_t nmemb, void* param) {
  std::string& text = *static_cast<std::string*>(param);
  size_t totalsize = size * nmemb;
  text.append(static_cast<char*>(buffer), totalsize);
  return totalsize;
}

そして、私は次のような主な機能を持っています

int main() {



std::string result;
CURL* curl;
CURLcode res;

curl_global_init(CURL_GLOBAL_DEFAULT);

curl = curl_easy_init();
if (curl) {
    curl_easy_setopt(curl,CURLOPT_URL,"https://example-project-62811-default-rtdb.firebaseio.com/.json");

    curl_easy_setopt(curl, CURLOPT_PROXY_SSL_OPTIONS, CURLSSLOPT_ALLOW_BEAST |
        CURLSSLOPT_NO_REVOKE);
    
    curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,my_write);
    curl_easy_setopt(curl,CURLOPT_WRITEDATA, &result);

    curl_easy_setopt(curl,CURLOPT_VERBOSE, 1L);

    res = curl_easy_perform(curl);

    curl_easy_cleanup(curl);

    if (CURLE_OK != res) {
        std::cerr << "CURL ERROR: " << res << "\n";
    }

}
curl_global_cleanup();

std::cout << result << "\n\n";
}

コードはhttps://api.chucknorris.ioのような他の API で正常に動作しており、firebase に接続しようとするとエラーが発生します。

  • 35.201.97.85:443 を試しています...
  • example-project-62811-default-rtdb.firebaseio.com (35.201.97.85) ポート 443 (#0) に接続
  • schannel: 次の InitializeSecurityContext が失敗しました: 不明なエラー (0x80092013)
  • 接続 0 を閉じています
  • schannel: example-project-62811-default-rtdb.firebaseio.com ポート 443 で SSL/TLS 接続をシャットダウンしています CURL エラー: 35

edit-1コマンドプロンプトから実行を書き込もうとしたところ、同じエラーが発生し、 --ssl-no-revoke をスクリプトに追加すると機能しました

curl https://example-project-62811-default-rtdb.firebaseio.com/.json --ssl-no-revoke

動作していて、コードでこの手法を使用しようとしました

curl_easy_setopt(curl, CURLOPT_PROXY_SSL_OPTIONS, CURLSSLOPT_ALLOW_BEAST |
        CURLSSLOPT_NO_REVOKE);

しかし、うまくいきませんでした。どうすればこの問題を解決できますか?

4

1 に答える 1