如何使用 libcurl 进行 HTTP 发布?

Posted

技术标签:

【中文标题】如何使用 libcurl 进行 HTTP 发布?【英文标题】:How to use libcurl for HTTP post? 【发布时间】:2012-05-18 10:15:04 【问题描述】:

我是使用 libcurl 的新手。我不清楚如何将它用于 HTTP POST 请求以及如何检查结果。我该如何使用它?

【问题讨论】:

你检查了吗:curl.haxx.se/libcurl/c/postit2.html 亲切的问候,博 是的,我检查了它,但它是用于上传文件的,我必须用它来提交表单我不清楚它是如何完成的。 【参考方案1】:
#include <curl/curl.h>
main()

  CURL *curl;
  curl_global_init(CURL_GLOBAL_ALL);
  curl = curl_easy_init();
  curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
  curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.com/hello-world");
  curl_easy_setopt(curl, CURLOPT_POST, 1);
  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "foo=bar&foz=baz");
  curl_easy_perform(curl);
  curl_easy_cleanup(curl);

【讨论】:

如何提交multipart/formdata? 非常感谢!! 我怎样才能以这种方式上传文件? 发表问题?【参考方案2】:

有关-d 选项的文档,请参阅手册页。您可以多次使用它来将不同的键、值对传递给服务器。一旦成功,请使用--libcurl 标志查看如果您尝试使用 libcurl 在应用程序中手动执行此操作会是什么样子。

【讨论】:

我只是想使用 libcurl 提交一个表单,说我必须提交在 yahoo.com 上创建帐户我应该怎么做?我不想上传文件,但要提交表单。 K 生成的代码正在使用 POSTFIELDS。但我想提交一个html表单。 到底是什么问题?据我所知,postfields 是您要发布的值。 K 它也可以使用。但是如何使用函数 curl_formadd() 呢?我读到这个函数基本上是用来向服务器提交表单数据的。给出了上传文件的示例。我想用它来填写表格并提交。 如果您遇到真正的问题,为什么不尝试一下并回复?我自己没有使用过libcurl,这是基于我浏览文档的建议。【参考方案3】:

这是为了分享我使用 libcurl 开发 REST 客户端的经验,我找到了一种非常简单的方法来找出 ANY RESTcode sn-ps >在多种语言中使用POSTMAN调用。它真的对我有用!!! 安装 POSTMAN 并检查右侧是否有一个名为 'Code' 的按钮(我仅在 Windows 上使用过,但应该适用于其他操作系统,并且 libcurl 可以跨许多操作系统移植)

如果有人想阅读文档和示例,可以在这里找到。 https://curl.haxx.se/docs/faq.html#What_is_cURL

您可以使用 libcurl 在左侧窗格中找到支持的语言的正确代码 sn-ps。 C、C#、php、Python、Java、Java 脚本等...

最好的办法是您可以测试来自 POSTMAN 的调用,同时也可以从命令提示符中找到正确的代码 sn-p 和 curl 命令(如果您从左侧窗格中选择 cURL

【讨论】:

以上是关于如何使用 libcurl 进行 HTTP 发布?的主要内容,如果未能解决你的问题,请参考以下文章

基于 Boost.ASIO 的 HTTP 客户端库(如 libcurl)[关闭]

C++ 用libcurl库进行http通讯网络编程 转

如何使用 libcurl(或其他方式)从 HTTP 服务器检索文件? [复制]

如何使用 libcurl(对于 Influxdb)发布包含换行符的数据?

libcurl库进行http通讯-开篇

libcurl库进行http通讯-一些基本的函数