可以在 libcurl 中将多部分帖子字段作为数组发送

Is possible to send multipart post fields as array in libcurl?

本文关键字:字段 数组 libcurl 多部      更新时间:2023-10-16

我可以使用CURLOPT_POSTFIELDS设置帖子正文,例如'a[]=1&a[]=2&a[]=3'。

当我尝试使用curl_formadd填充多部分参数时,它总是返回CURL_FORMADD_OPTION_TWICE,我看到有一个选项CURLFORM_ARRAY,但似乎它适用于选项,而不是多值字段。

有没有办法使用 curl API 做到这一点?

curl_formadd是使用libcurl进行多部分表单帖子的(有用的)方法。您也可以创建自己的缓冲区并将其作为普通帖子发送,但这需要您自己格式化所有内容,我不建议这样做。

如果您在curl_formadd方面遇到问题,最好进行尽可能小的测试并寻求帮助。在curl网站上有使用示例curl_formadd。

谢谢丹尼尔·斯坦伯格纠正我的错误。

使用curl_formadd发布数组很容易

struct curl_httppost *formpost = NULL;
struct curl_httppost *lastptr = NULL;
char* buffer = "part body";
int len = strlen(buffer);
curl_formadd(&formpost,
           &lastptr,
           CURLFORM_COPYNAME, "name[]",
           CURLFORM_BUFFER, "buffer",
           CURLFORM_BUFFERPTR, buffer,
           CURLFORM_BUFFERLENGTH, len,
           CURLFORM_END);
curl_formadd(&formpost,
           &lastptr,
           CURLFORM_COPYNAME, "name[]",
           CURLFORM_BUFFER, "buffer",
           CURLFORM_BUFFERPTR, buffer,
           CURLFORM_BUFFERLENGTH, len,
           CURLFORM_END);