gpt4 book ai didi

json - 如何使用 libcurl 发布 JSON 缓冲区?

转载 作者:可可西里 更新时间:2023-11-01 15:07:22 27 4
gpt4 key购买 nike

我的 C++ 程序当前通过管道调用 curl (popen("curl ...")) 以将 JSON 数据文件发布到 Web 服务器。由于需要将 JSON 保存到文件并在子 shell 中调用 curl,因此这具有明显的性能限制。我想重写它以使用 libcurl,但我不清楚该怎么做。我传递给 popen() 的命令行是:

curl -s -S -D /dev/null -H "Content-Type: application/json" -X POST -d file-of-json http://server/handler.php

JSON 数据(大约 3K)在我需要发布之前位于 RAM 中的缓冲区中。我期待使用 libcurl 的 CURLOPT_READFUNCTION 将缓冲区假脱机到 libcurl(但我对替代方案持开放态度),并使用 CURLOPT_WRITEFUNCTION 来捕获服务器的回复,类似于我阅读来自 popen 管道的回复。

所有这些看起来都很简单。令人困惑的是我需要 CURLOPT_POSTCURLOPT_HTTPPOSTCURLOPT_POSTFIELDSCURLOPT_HTTPHEADER 的哪种组合。我已经阅读了很多关于这个主题的帖子(没有双关语),但没有一个完全符合我的情况。有什么建议吗?

[请注意,我通常没有任何 URL 编码的表单字段,像这样:http://server/handler.php?I=do¬=use&these=in&my=query]

最佳答案

您可以使用CURLOPT_POSTFIELDS:

CURL *curl = curl_easy_init();

curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/api/endpoint");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"hi\" : \"there\"}");

curl_easy_perform(curl);

由于 CURLOPT_POSTFIELDS 不会以任何方式修改有效载荷,因此 POST JSON 数据非常方便。另请注意,当提供 CURLOPT_POSTFIELDS 时,它会自动启用 CURLOPT_POST,因此无需在请求中提供 CURLOPT_POST

关于json - 如何使用 libcurl 发布 JSON 缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8251325/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com