我需要发送一个PUT请求发送json数据,我编写了下面的代码,但数据没有发送。有人可以帮忙吗?
$url = 'https://example.com';
$data='{"example":"valor"}';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_PUT, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($curl);
print_r($result);
感谢
答案 0 :(得分:1)
我想我知道你的问题。尝试添加
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
PHP文档暗示如果你不这样做,执行curl会直接将内容输出到一个页面,如果你将它作为一个没有输出的脚本使用什么,显然不会显示任何东西。这应该使$result
相等,然后允许您print_r
答案 1 :(得分:0)
我建议您使用Guzzle。它是CURL的一个包装器,它抽象出所有配置,并为您提供了许多便于使用的便捷方法。
您可以按照以下链接中的说明安装Guzzle: http://guzzle.readthedocs.org/en/latest/overview.html#installation
下面是一个如何使用guzzle来获得你想要的东西的例子。
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$url = 'https://example.com';
$data= array("example" => "valor");
$client = new Client();
$response = $client->request('PUT', $url, [
'json' => $data
]);
print_r($response);
我在许多项目中使用Guzzle代替原始CURL,并发现它可以节省大量时间。
答案 2 :(得分:0)
PUT
使用curl_setopt($ch, CURLOPT_PUT, true);
请参阅:How to start a GET/POST/PUT/DELETE request and judge request type in PHP?
答案 3 :(得分:0)
我遇到了同样的问题。我已经通过改变
解决了curl_setopt($curl, CURLOPT_URL, $url);
到
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
之前,这个,curl尝试发布一个文件或类似的东西,100-continue,但我们需要发布json。