JSON-request mit cURL in C++
Habe ich folgenden Befehl cURL, dieser funktioniert einwandfrei in terminal.
curl --insecure -X POST --data "username=testuser&password=12345" https://m360-prototype.herokuapp.com/sessions.json
Diese json-api sendet ein paar Parameter wie diese-- "status":{"code":200,"message":"OK"}
Nun möchte ich mein c++ - Programm, um es auszuführen. Ich habe aufgestellt und verwendet cURL, bevor für ftp-upload und download von ftp-Beispiele. Aber ich fand keine Beispiel, um dies zu tun.
Möchte ich wissen, wie kann ich pass Parameter username und password, um die json-api, und als Antwort bekommen von ihm.
Hier ist was ich versucht habe in einigen code, den ich gefunden im Internet, es hat nicht funktioniert.
struct curl_slist *headers=NULL; //init to NULL is important
headers = curl_slist_append(headers, "Accept: application/json");
headers = curl_slist_append(headers, "Content-Type: application/json");
headers = curl_slist_append(headers, "charsets: utf-8");
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(curl, CURLOPT_URL, "https://m360-prototype.herokuapp.com/sessions.json");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "username=testuser&password=12345");
curl_easy_setopt(curl, CURLOPT_HTTPGET,1);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
res = curl_easy_perform(curl);
if(CURLE_OK == res) {
char *ct;
/* ask for the content-type */
res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);
if((CURLE_OK == res) && ct)
printf("We received Content-Type: %s\n", ct);
}
}
Wie erhalte ich Antwort von dem web? ich weiß, es werden in form von Zeichenfolgen, und ich bin in der Lage, genug zu analysieren.
Ich bin auf der Suche, bis alle params (--unsicher-X POST --data)übergeben, um den curl-Befehl, ausgeführt im terminal, so wie man wenig Ahnung über das, was ich zu tun habe.
Ich bin ein Grafik-Programmierer 🙂 nicht so gut mit web-services.
Ich würde schätzen jede Hilfe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Senden von post-Daten, die Sie benötigen, zu sagen, curl, wo es ist. So etwas wie:
Lesen der Antwort in Erinnerung, es ist ein bisschen komplizierter - du brauchst eine callback Funktion, die aufgerufen wird, die Daten zu speichern. Es ist ein Beispiel dafür in der curl-docs, obwohl man könnte, nur hängen Sie die Ergebnisse in einen std::string, anstatt Ihren eigenen chunk-Struktur, wie Sie tun.
viel hängt davon ab, wie Sie das senden der Anforderung.
Die Art und Weise Sie senden Ihre Daten wichtig sind. wenn Sie möchten, eine Antwort vom server im json-format, sollten Sie die Anfrage im json-format als auch.
Zusammen mit dem, was Der dunkle oben gesagt, die Kombination mit einem JSON-Anfrage, bekam ich die Ergebnisse, die ich erwartet hatte..
Den folgenden code war für mich... die params, dass Sie an den server gesendet werden sollen im json-format---
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
Den Curl-Befehl hat eine option -libcurl . Es sollte Ihnen helfen herauszufinden, die richtige libcurl-code zu verwenden.
Fügen Sie diese option am Ende Ihrer Arbeit, Curl-Befehl zusammen mit einem Dateinamen und die Curl-Ausgabe wird eine Arbeitsgruppe libcurl c Beispiel des Curl-Befehls.
Kompilieren des ausgegebenen code mit der -lcurl option.
Unten ist ein Beispiel der libcurl-code, den ich verwenden, um POST JSON-von c++ zu node.js.
Node.js (Express) empfängt die JSON als: