libcurl http get request au format json

Existe-t-il un moyen d’envoyer une demande d’access HTTP à l’aide de libcurl au format JSON?

Ma demande actuelle est

curl_easy_setopt(curl_handle, CURLOPT_URL, "http://localhost:9200/_search?q=tag:warcraft")

en utilisant libcurl. C’est équivalent en curl c’est

 curl -XGET http://localhost:9200/_all/tweet/_search?q=tag:warcraft 

J’aimerais envoyer la requête curl suivante (au format json) à l’aide de libcurl.

 curl -XGET http://localhost:9200/_search -d '{ "query" : { "term" : { "tag": "warcraft" } } }' 

Je voudrais connaître le code équivalent libcurl pour envoyer la demande ci-dessus. Merci.

vous devriez utiliser CURLOPT_POSTFIELDS

 curl_easy_setopt(curl, CURLOPT_POST, 1); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_data_encoded_as_ssortingng); 

L’option -d est utilisée pour la méthode POST. De la page de manuel curl

-d, –data Envoie les données spécifiées dans une requête POST au serveur HTTP

Si vous devez envoyer plus de données qui ne peuvent pas tenir dans une chaîne de requête, vous devez utiliser la méthode POST.

http://en.wikipedia.org/wiki/POST_(HTTP)

Dans le cadre d’une requête GET, certaines données peuvent être transmises dans la chaîne de requête de l’URI, en spécifiant par exemple les termes de recherche, les plages de dates ou d’autres informations définissant la requête. Dans le cadre d’une requête POST, une quantité arbitraire de données de tout type peut être envoyée au serveur dans un corps de message de requête.

Si vous devez ssortingctement utiliser GET (?), Formez votre URL de manière à placer vos données json dans la chaîne de requête elle-même.

 query_ssortingng = "q=" + json_encoded_to_str curl_easy_setopt(curl_handle, CURLOPT_URL, "http://localhost:9200/_search?" + query_ssortingng) 

Suivant les conseils de kalyan, voici le code avec lequel je me suis retrouvé. Poster ceci pour l’achèvement.

 int main() { CURL *curl_handle; CURLcode res; static const char *postthis="{\"query\":{\"term\":{\tag\":\"warcraft\"}}}"; curl_global_init(CURL_GLOBAL_ALL); curl_handle = curl_easy_init(); if(curl_handle) { curl_easy_setopt(curl_handle, CURLOPT_URL, "http://localhost:9200/_search"); curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDS, postthis); curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDSIZE, (long)strlen(postthis)); curl_easy_setopt(curl_handle, CURLOPT_WRITEHEADER, stdout); curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, stdout); res = curl_easy_perform(curl_handle); if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); curl_easy_cleanup(curl_handle); return 0; } }