Question

J'essaie d'écrire une application qui utilise libCurl pour poster des demandes soap sur un service Web sécurisé. Cette application Windows est basée sur la version 7.19.0 de libCurl, qui à son tour est construite sur openssl-0.9.8i. Le code pertinent lié à curl suit:

FILE *input_file = fopen(current->post_file_name.c_str(), "rb");
FILE *output_file = fopen(current->results_file_name.c_str(), "wb");
if(input_file && output_file)
{
    struct curl_slist *header_opts = 0;
    CURLcode rcd;

    header_opts = curl_slist_append(header_opts, "Content-Type: application/soap+xml; charset=utf8");
    curl_easy_reset(curl_handle);
    curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1);
    curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, output_file);
    curl_easy_setopt(curl_handle, CURLOPT_READDATA, input_file);
    curl_easy_setopt(curl_handle, CURLOPT_URL, fs_service_url);
    curl_easy_setopt(curl_handle, CURLOPT_POST, 1);
    curl_easy_setopt(curl_handle, CURLOPT_HTTPHEADER, header_opts);
    rcd = curl_easy_perform(curl_handle);
    if(rcd != 0)
    {
        current->curl_result = rcd;
        current->curl_error = curl_easy_strerror(rcd);
    }
    curl_slist_free_all(header_opts);
}

Lorsque j'essaie d'exécuter l'URL, curl renvoie une erreur CURLE_OUT_OF_MEMORY qui semble être liée à un échec de l'allocation d'un contexte SSL. Quelqu'un d'autre a-t-il déjà rencontré ce problème?

Était-ce utile?

La solution 2

Après un examen approfondi, j'ai constaté que cette erreur était due à un échec d'initialisation de la bibliothèque openSSL en appelant SSL_library_init ().

Autres conseils

J'ai eu le même problème, je pensais simplement ajouter la remarque selon laquelle au lieu d'appeler directement l'exportation OpenSsl, SSL_library_init peut être corrigé en ajoutant l'indicateur CURL_GLOBAL_SSL à curl_global_init

J'ai rencontré le même problème après la mise à niveau vers Ubuntu 16.04, comme décrit dans cette réponse . La solution consistait à utiliser TLS comme tel.

curl_easy_setopt(curl_, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2));

Apparemment, SSLv3 a été désactivé sur Ubuntu 16.04.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top