我在C中使用libcurl定义了带有JSON请求主体的PUT请求。
这就是我的做法:
sprintf(jsonObj, "\"name\" : \"%s\", \"age\" : \"%s\"", name, age);
struct curl_slist *headers = NULL;
curl_slist_append(headers, "Accept: application/json");
curl_slist_append(headers, "Content-Type: application/json");
curl_slist_append(headers, "charset: utf-8");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonObj);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcrp/0.1");
res = curl_easy_perform(curl);
请求主体将这样到达:
{ '"name" : "Pedro", "age" : "22"' }
随着{ '
在开始和' }
结尾。
- - 更多信息 - - -
如果我声明此代码
char* jsonObj = "{ \"name\" : \"Pedro\" , \"age\" : \"22\" }";
struct curl_slist *headers = NULL;
curl_slist_append(headers, "Accept: application/json");
curl_slist_append(headers, "Content-Type: application/json");
curl_slist_append(headers, "charset: utf-8");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonObj);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcrp/0.1");
res = curl_easy_perform(curl);
服务器将其作为请求正文接收:
{ '{ "name" : "Pedro" , "age" : "22" }': '' }
我的问题是:
libCurl是否自动对Json请求进行预格式化/编码?
顺便说一句,libCurl是否具有某种编码JSON对象的方式?
非常感谢!
问题可能出在标题上。在配置curl_slist标头时,我认为您应该将curl_slist_append的输出分配回标头:
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Accept: application/json");
headers = curl_slist_append(headers, "Content-Type: application/json");
headers = curl_slist_append(headers, "charset: utf-8");
问题内容: 我正在尝试使用libcurl从C ++的REST网页下载json文件。如果我访问该网页,则以下代码有效,但如果尝试访问json …,则该代码不会下载。 我认为这应该很容易解决,但我找不到对此的任何引用… 如果我转到网页,它将打开json,但是此代码仅返回text / html;字符集= utf-8 ?????????? 问题答案:
我如何在这个Json文件中保存对象数据..请帮助我。
通过HttpUrlConnection在服务器上注册用户数据的Post请求 在android中通过http post方法发送json对象 如何用Android通过请求发送JSON对象?
问题内容: 我一直在寻找一套在JSON和XML之间进行转换的例程,但毫无用处。我在Javascript,Java,PHP和Python中找到了这样的例程,但在C或C ++中却找不到。 FWIW,我的json库是json- spirit。我当前正在处理JSON,并希望通过转换层添加XML支持(将传入消息从XML转换为JSON,对其进行处理,将结果转换回XML,然后将其输出)。 有人有指针吗? 我还看
问题内容: 我需要在ubuntu机器上编写的软件中使用libcurl。我正在使用Eclipse编写和编译所有软件。当我将libcurl文件与.cpp文件放在同一文件夹中,并在头文件中包含curl.h文件时,当我尝试编译程序时,出现以下错误: 我从libcurl中获取了include文件夹的内容,并将其与.cpp文件放在同一文件夹中。然后在.cpp文件的标题中,键入: 我也尝试过: 关于这个问题有什
问题内容: 我正在尝试向不受控制的域上的API发出一个简单的JSON获取请求。 我的代码很简单: 但这是跨域请求,因此我在Chrome控制台中收到此错误: 当我尝试添加参数时,控制台将返回此错误: 未捕获到的SyntaxError:意外令牌: 但是,当我检查Chrome中的“网络”标签时,我看到“标题”下的状态代码为200 OK,实际上我可以在“响应”标签中看到完整的响应,但控制台仍显示“意外令牌