是否可以在 libcurl 中将多部分 post 字段作为数组发送?
Is possible to send multipart post fields as array in libcurl?
我可以使用 CURLOPT_POSTFIELDS 设置 post 正文 'a[]=1&a[]=2&a[]=3'。
当我尝试使用 curl_formadd 填充多部分参数时,它总是 return CURL_FORMADD_OPTION_TWICE,我看到有一个选项 CURLFORM_ARRAY,但似乎它是用于选项,而不是对于多值字段。
有没有办法使用 curl API 来做到这一点?
curl_formadd 是使用 libcurl 执行多部分表单 post 的(有用的)方法。您 可以 也可以创建自己的缓冲区并将其作为正常发送 post,但这需要您自己格式化所有内容,我不建议这样做。
如果您在使用 curl_formadd 时遇到问题,最好进行尽可能小的测试并寻求帮助。在 curl 网站上有 curl_formadd 个使用示例。
感谢 Daniel Stenberg 纠正我的错误。
使用curl_formadd
post数组很容易
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);
我可以使用 CURLOPT_POSTFIELDS 设置 post 正文 'a[]=1&a[]=2&a[]=3'。
当我尝试使用 curl_formadd 填充多部分参数时,它总是 return CURL_FORMADD_OPTION_TWICE,我看到有一个选项 CURLFORM_ARRAY,但似乎它是用于选项,而不是对于多值字段。
有没有办法使用 curl API 来做到这一点?
curl_formadd 是使用 libcurl 执行多部分表单 post 的(有用的)方法。您 可以 也可以创建自己的缓冲区并将其作为正常发送 post,但这需要您自己格式化所有内容,我不建议这样做。
如果您在使用 curl_formadd 时遇到问题,最好进行尽可能小的测试并寻求帮助。在 curl 网站上有 curl_formadd 个使用示例。
感谢 Daniel Stenberg 纠正我的错误。
使用curl_formadd
post数组很容易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);