【发布时间】:2023-04-11 04:30:01
【问题描述】:
这可以吗?我看到像
这样的例子curl_setopt($ch, CURLOPT_POSTFIELDS, array(
'variable' => '@path/to/file;type=application/json'
));
但如果我将字符串作为变量值传递,我将无法设置此 mime 类型。我与之交互的 API 明确要求将此 mime 类型设置为 application/json,但除非我使用文件,否则我似乎无法使用 curl 库设置它。例如:
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
'variable' => 'json_string;type=application/json'
));
只输出一个带有 type=application/json 的字符串(这是有道理的),类似于
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
'variable' => sprintf('@%s;type=application/json', $json_string)
));
无法将任何内容传递给服务器,表面上是因为它找不到文件 (?)。
关于如何在不写出临时文件或编写我自己的帖子请求的情况下显式设置此 MIME 类型的任何想法?
【问题讨论】:
-
您是否尝试过通过 CURLOPT_HTTPHEADER 设置
Content-Type标头? -
没有 curl 我曾经使用
header('content-type: application/json');更改了响应头的Content-Tyepe -
@mario - 这设置了 HTTPHEADER 的内容类型,我需要设置单个表单元素的内容类型...
-
@SilentAssassin - 我需要在请求中更改表单元素的单个 mime 类型,没有响应,我是客户端,而不是服务器。
-
好的,我明白了。然后你需要构造一个custom multipart/ payload。每个手工艺品都可以,但pear.php.net/package/Mail_Mime 也可能是一种选择(它不仅适用于邮件)。