使用PUT方法的cURL

时间:2013-07-31 16:13:58

标签: php curl

是否可以仅使用URL使用PUT方法执行cURL请求?这是我希望能够使用PUT方法使用cURL调用的URL:
$url = https://url.net/card/activate.xml?card_id=1234567890&application_key=123123&accesskey=abcdef

我能够使用REST控制台(Chrome扩展程序)使其工作,但不使用cURL。我尝试将curl_setoptCURLOPT_PUTCURLOPT_INFILECURLOPT_INFILESIZE一起使用,但我收到一个空白页面,根本没有回复。

这是我目前拥有的标题和卷曲选项:

$header[] = 'Authorization: Basic abc123';
$header[] = 'Accept: text/xml';

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$output = curl_exec($soap_do);

目前,通过这些设置,我得到411长度要求错误。是否有可能让它像那样工作,还是我试图配置一些永远不会起作用的东西?

1 个答案:

答案 0 :(得分:4)

HTTP 411错误

  

Web服务器(运行Web站点)认为客户端(例如Web浏览器或CheckUpDown机器人)发送的HTTP数据流应包含“Content-Length”规范。这通常仅用于导致在Web服务器上放置数据的HTTP方法,而不是从中检索数据。

您需要设置数据的内容长度

$header[] = 'Content-length: '.strlen($put_data);

或者如果您没有任何数据,只需将0放在那里。