1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
#include "curl\curl.h"
STATUS TEDETIS_E_sendEnvelop(char CHEMIN_FLUX[], char* m_tdt_url, char* retour)
{
struct curl_httppost *post = NULL;
struct curl_httppost *last = NULL;
char* ok = NULL;
char* next_ok = NULL;
char* url = NULL;
CURL* handle;
int i = 0;
int taille = 0;
int curl_code = 0;
int** returnedEnv = 0;
char** erreurlist = NULL;
//Calcul de l'URL
url = (char*)malloc(strlen(m_tdt_url) + strlen(PAGE_TRANSACTION) + 1);
sprintf(url, "%s%s", m_tdt_url, PAGE_TRANSACTION);
curl_formadd(&post, &last, CURLFORM_COPYNAME, "enveloppe", CURLFORM_FILE, CHEMIN_FLUX, CURLFORM_FILENAME, "EACT--123456725--20150821-8.tar.gz", CURLFORM_END);
curl_formadd(&post, &last, CURLFORM_COPYNAME, "api", CURLFORM_PTRCONTENTS, "1", CURLFORM_END);
curl_global_init(CURL_GLOBAL_ALL);
handle = curl_easy_init();
if (handle)
{
cout << "TEDETIS_E_sendEnvelop 4\n" << flush;
curl_easy_setopt(handle, CURLOPT_SSL_VERIFYPEER, 0);
curl_easy_setopt(handle, CURLOPT_SSL_VERIFYHOST, 1);
curl_easy_setopt(handle, CURLOPT_SSLCERT, "certificat");
curl_easy_setopt(handle, CURLOPT_SSLKEY, "pkey");
curl_easy_setopt(handle, CURLOPT_URL, url);
curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, monwrite);
curl_easy_setopt(handle, CURLOPT_WRITEDATA, &retour);
curl_easy_setopt(handle, CURLOPT_HTTPPOST, post);
curl_code = curl_easy_perform(handle);
curl_easy_cleanup(handle);
}
curl_global_cleanup();
taille = strlen(retour) + 1;
ok = strtok(retour, "\n");
ok = strtok_s(retour, "\n", &next_ok);
if (!strcmp(ok, "OK"))
{
taille = atoi(strtok(NULL, "\n"));
*returnedEnv = (int*)malloc((taille + 1)*sizeof(int));
(*returnedEnv)[0] = taille;
for (i = 1; i <= taille; i++) (*returnedEnv)[i] = atoi(strtok(NULL, "\n"));
}
else
{
*erreurlist = (char*)malloc(taille);
strcpy(*erreurlist, strtok(NULL, "\0"));
return (COM_ENVELOPPE_KO);
}
return(curl_code);
} |
Partager