You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用cURL发送带JSON请求体的PUT请求?

如何用PHP CURL发送带请求体的PUT请求

之前的代码踩了两个坑:一是CURLOPT_BODY根本不是PHP CURL的合法选项,二是直接用CURLOPT_POSTFIELDS会默认转成POST请求。给你两种靠谱的解决办法:

方法一:指定PUT方法+用POSTFIELDS传数据(推荐)

直接用CURLOPT_CUSTOMREQUEST强制指定请求方法为PUT,同时用CURLOPT_POSTFIELDS传递JSON数据,完全不会变成POST请求。记得一定要加Content-Type请求头,不然服务端大概率解析不了你的JSON。

示例代码:

$url = "你的接口地址";
$postData = ["name" => "test", "status" => 1]; // 要发送的业务数据

$ch = curl_init($url);
// 强制设置请求方法为PUT
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
// 传递JSON格式的请求体
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
// 设置请求头,告诉服务端这是JSON数据
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Content-Type: application/json",
    "Content-Length: " . strlen(json_encode($postData)) // 可选,部分服务端需要这个头
]);
// 可选:开启后curl_exec会返回响应内容,而不是直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 执行请求并处理结果
$response = curl_exec($ch);
if (curl_errno($ch)) {
    echo "CURL出错:" . curl_error($ch);
}
curl_close($ch);

// 打印响应结果看看
var_dump($response);

方法二:用CURLOPT_PUT配合临时文件(传统写法)

如果非要用CURLOPT_PUT这个选项,那得把请求体写到临时文件里,因为CURLOPT_PUT要求从文件读取请求数据。这种写法比较麻烦,不推荐,但可以了解下:

$url = "你的接口地址";
$postData = json_encode(["name" => "test", "status" => 1]);

// 创建临时文件并写入数据
$tempFile = tmpfile();
fwrite($tempFile, $postData);
fseek($tempFile, 0); // 把文件指针移到开头,不然curl读不到内容

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_PUT, true);
// 指定要读取的文件句柄
curl_setopt($ch, CURLOPT_INFILE, $tempFile);
// 指定文件大小,curl会根据这个设置Content-Length头
curl_setopt($ch, CURLOPT_INFILESIZE, strlen($postData));
// 同样要设置JSON请求头
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: application/json"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
if (curl_errno($ch)) {
    echo "CURL出错:" . curl_error($ch);
}
curl_close($ch);
fclose($tempFile); // 关闭临时文件,系统会自动删除它

var_dump($response);

注意事项

  • 别同时设置CURLOPT_PUT和CURLOPT_CUSTOMREQUEST,会冲突导致请求异常。
  • 不管用哪种方法,Content-Type头一定要加,否则服务端可能把你的JSON当成普通字符串处理。

内容的提问来源于stack exchange,提问作者Bart Friederichs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:12:50