Ho un'applicazione che ha ricevuto dati tramite richieste HTTP POST. Sto cercando di usare libcurl per aprire una richiesta a questa app, inviare i dati e ricevere la risposta dall'app. Questo è il codice che ho finora:libcurl HTTPS invio dati POST?
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl)
{
const int timeout = 30000;
char outputmessage[]="VGhpcyBpcyBqdXN0IGEgbWVzc2FnZSwgaXQncyBub3QgdGhlIHJlYWwgdGhpbmc=";
curl_easy_setopt(curl, CURLOPT_URL, "https://somehost.com/someapp");
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.5");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, outputmessage);
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(outputmessage));
curl_easy_setopt(curl, CURLOPT_POST, 1L);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout/1000);
res = curl_easy_perform(curl);
if(CURLE_OK != res)
{
printf("Error: %s\n", strerror(res));
return 1;
}
// now what?
// cleanup when done
curl_easy_cleanup(curl);
}
return 0;
}
Questo si collega essenzialmente al server, ottengo un OK sul curl_easy_perform()
. Posso vedere la connessione su Wireshark.
due domande:
1) E 'questo il modo corretto di invio di dati tramite un post, e
2) Come faccio ad avere la risposta dall'applicazione.
Ho pensato di dover usare curl_easy_recv()
ma non riesco a vedere come. Qualsiasi codice di esempio è benvenuto. Grazie.
I dati restituiti dall'app si trovano subito dopo il 200 OK. Ho bisogno di leggere l'intestazione per vedere se la richiesta è andata bene, ma poi i dati dopo di essa. Qualche idea? E non per file, ma per un char * –
Per informazioni, dovrebbe essere un vuoto * ptr, non un char * ptr, ma modificherai la mia risposta con il codice che sto usando per gestire la risposta. – asc99c
Capito, grazie. Ora ho bisogno di iniziare a analizzare tutte le informazioni. grazie per l'aiuto –