PHP 的 CURL CURLOPT_POSTFIELDS 参数

$data = ["foo"=>"bar"];

0,直接传数组

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

会自动设置 content-type

content-type: multipart/form-data; boundary=------------------------72fcd12e93d3c1da

服务器可以通过 $_POST $_REQUEST 变量接收数据

1,对参数进行 http_build_query

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

会自动设置 content-type

content-type: application/x-www-form-urlencoded

服务器可以通过 $_POST $_REQUEST 变量接收数据,也可以用 file_get_content("php://input") 来获取 foo=bar 字符串

2,对参数进行 json_encode

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

会自动设置 content-type

content-type: application/x-www-form-urlencoded

相当于 key 为 json_encode($data) ,value 为空

因此服务器需要用 file_get_content("php://input") 来获取 json 字符串

application/x-www-form-urlencoded 即 form 表单提交

multipart/form-data 即文件上传

Show Comments