以json格式卷曲到libcurl http put请求

时间:2017-03-13 08:07:56

标签: json http curl libcurl arangodb

目前我正在编写一个与ArangoDB交互的程序

有没有办法使用libcurl以JSON格式发送HTTP put请求?

我目前在curl中的命令是

curl  -X PUT --data-binary @- --dump - --user "root:" http://localhost:8529/_db/myapp1/_api/simple/lookup-by-keys << EOF {"keys" : [ "FirstUser" ], "collection" : "five"} EOF

我想知道上面发送请求的等效libcurl代码。感谢

1 个答案:

答案 0 :(得分:1)

//PUT Request
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>

int main(int argc, char const *argv[]){
CURL *curl;
CURLcode res;
long http_code;
static const char *jsonObj = //insert json here

curl = curl_easy_init();
curl_global_init(CURL_GLOBAL_ALL);

if(curl){

    curl_easy_setopt(curl, CURLOPT_URL, "//insert your url here");
    curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_BASIC);
    curl_easy_setopt(curl, CURLOPT_USERPWD, "root:");

    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonObj);


    //enable to spit out information for debugging
    //curl_easy_setopt(curl, CURLOPT_VERBOSE,1L); 

    res = curl_easy_perform(curl);

    if (res != CURLE_OK){
        fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res) );
    }

    printf("\nget http return code\n");
    curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code);
    printf("http code: %lu\n", http_code );


    curl_easy_cleanup(curl);
    curl_global_cleanup();

    }
return 0;
}

这是我提出的解决方案。请随意添加/改进