Curl 中用于 POST 请求的 CURLOPT_POSTFIELDS
当使用curl 执行 POST 请求并指定 CURLOPT_POSTFIELDS 选项时,考虑以下因素至关重要:适当的格式。例如,考虑发布两个字段“first”和“last”:
“first=John&last=Smith”
字符串格式
If发送字符串作为 POST 数据时,应对其进行 URL 编码以确保正确的字符编码。下面的代码演示了这一点:
$data = urlencode("first=John&last=Smith");
数组格式
但是,如果POST数据是数组,则必须遵循“key => value”格式:
$data = [ 'first' => 'John', 'last' => 'Smith' ];
在这种情况下,curl 会自动将 Content-Type 标头设置为"multipart/form-data"。
Content-Type 标头
建议显式设置 Content-Type 标头以获得更好的兼容性。例如,要将其设置为“application/json”:
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
使用 http_build_query()
或者,不手动构建查询字符串,而是使用 PHP 的 http_build_query () 函数可以使用:
$query = http_build_query($data, '', '&'); curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
该函数处理URL 编码和正确的 key=value 格式无缝衔接。
以上是如何在 cURL POST 请求中正确设置 CURLOPT_POSTFIELDS 格式?的详细内容。更多信息请关注PHP中文网其他相关文章!