【问题标题】:Send PUT request with PHP cURL使用 PHP cURL 发送 PUT 请求
【发布时间】:2016-03-04 18:48:34
【问题描述】:

我正在尝试与在每个请求中首先等待令牌的 Web 服务进行通信。 这是我的问题,网络服务正在通过file_get_contenst(php://input) 等待令牌。

我没有找到通过这种方法发送 cURL 请求的方法(发送原始数据/放置数据而不是 Post)。 有人可以指导我吗?

我试过类似的东西:

$fp = fopen('php://temp/maxmemory:256000', 'w');
fwrite($fp, TOKEN);
fseek($fp, 0);
curl_setopt($ch, CURLOPT_INFILE, $fp); // file pointer
curl_setopt($ch, CURLOPT_INFILESIZE, strlen($json));

【问题讨论】:

    标签: php curl


    【解决方案1】:

    curl_setopt($ch, CURLOPT_PUT, true);

    更多信息您可以参考:How to start a GET/POST/PUT/DELETE request and judge request type in PHP?

    【讨论】:

    • 我们也可以使用 file_get_contents 和自定义 HTTP stream context。检查here
    【解决方案2】:
    1. HTTP PUT 方法一般用于更新资源。
    2. 首先需要带上(GET)资源信息。
    3. 然后根据您的参数更新资源信息。
    4. 最后,向服务器发出PUT 请求。

    在 php 中,curl 用于进行休息调用。 curl 直接支持 HTTP GETPOST。但是对于 PUT 和 DELETE,您必须在 curl_setopt() 中相应地设置选项

         $curl = curl_init($url);
    
         **curl_setopt($curl,CURLOPT_CUSTOMREQUEST,"PUT")**;
         curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
    
         curl_setopt($curl, CURLOPT_HTTPHEADER,$headers);
    
         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
         curl_setopt($curl,CURLOPT_POSTFIELDS,$update_para);
    
         $curl_response = curl_exec($curl);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-29
      • 2013-12-09
      • 1970-01-01
      • 2014-01-15
      • 2017-06-16
      • 1970-01-01
      • 2012-08-31
      • 2018-03-30
      相关资源
      最近更新 更多