【问题标题】:PHP CURL PUT request with data带有数据的 PHP CURL PUT 请求
【发布时间】:2015-09-11 00:50:55
【问题描述】:

我需要做一个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);

谢谢

【问题讨论】:

  • 你遇到了什么错误。
  • 我也有同样的问题。请求已发送,但目标服务器没有得到它的正文。你有什么建议吗?
  • @EvgeniyTimchenko 我不记得究竟是什么解决了我的问题,但我设置了更多选项,例如 (CURLOPT_COOKIEJAR、CURLOPT_COOKIEFILE、CURLOPT_COOKIESESSION、CURLOPT_SSL_VERIFYPEER、CURLOPT_AUTOREFERER、CURLOPT_USERAGENT、CURLOPT_POSTFIELDS 和 CURLOPT_HTTPHEA

标签: php curl httprequest


【解决方案1】:

我想我知道你的问题。尝试添加

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

PHP 文档暗示,如果您不这样做,执行 curl 只会将内容直接输出到页面,如果您将其用作不输出任何内容的脚本,显然不会显示任何事物。这应该使$result 相等,然后允许您print_r

参考:http://php.net/manual/en/function.curl-setopt.php

【讨论】:

  • @LucianoMarqueto 我看到你有curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);,但是为了排除故障,尝试用true 替换你的1。您是否从页面中收到任何错误?
  • @LucianoMarqueto 页面上是否显示任何内容?有什么错误吗?
【解决方案2】:

我建议你使用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,发现它非常节省时间。

【讨论】:

    【解决方案3】:

    对于PUT,请使用curl_setopt($ch, CURLOPT_PUT, true);

    请参考:How to start a GET/POST/PUT/DELETE request and judge request type in PHP?

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题。我已经通过改变解决了

      curl_setopt($curl, CURLOPT_URL, $url);
      

      curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
      

      之前,这个,curl尝试发布一个文件或类似的东西,100-continue,但是我们需要发布json。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-09
        • 1970-01-01
        • 1970-01-01
        • 2017-06-16
        • 1970-01-01
        • 2020-10-29
        • 1970-01-01
        相关资源
        最近更新 更多