是否可以仅使用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_setopt
与CURLOPT_PUT
,CURLOPT_INFILE
和CURLOPT_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长度要求错误。是否有可能让它像那样工作,还是我试图配置一些永远不会起作用的东西?
答案 0 :(得分:4)
Web服务器(运行Web站点)认为客户端(例如Web浏览器或CheckUpDown机器人)发送的HTTP数据流应包含“Content-Length”规范。这通常仅用于导致在Web服务器上放置数据的HTTP方法,而不是从中检索数据。
您需要设置数据的内容长度
$header[] = 'Content-length: '.strlen($put_data);
或者如果您没有任何数据,只需将0
放在那里。