如何解决不允许的方法必须为以下之一:在php中输入

时间:2018-09-19 14:03:50

标签: php

我正在为此编写一个php,但在输出中出现错误消息

  

不允许使用方法。必须是以下之一:PUT   这是我的PHP代码

$h[]='Content-Type: application/json; charset=UTF-8';
$h[]='User-Agent: okhttp/3.9.1';

$postdata='{"my_link":"abcd1234"}';
$url=http://myurl.com
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_USERAGENT,$agent);
curl_setopt($ch,CURLOPT_VERBOSE,1);
curl_setopt($ch,CURLOPT_POST,TRUE);
curl_setopt($ch,CURLOPT_POSTFIELDS,$postdata);
curl_setopt($ch,CURLOPT_HTTPHEADER,$h);
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,TRUE);

$output=curl_exec($ch);
echo "$output";

如何解决这个问题,伙计们帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

以示例方式进行尝试。请求已通过邮递员进行了测试:

<?php

$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_PORT => "53632",
  CURLOPT_URL => "http://myurl.com:53632/api/todo/1",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_POSTFIELDS => " {'my_link': 'abcd1234' }",
  CURLOPT_HTTPHEADER => array(
    "Cache-Control: no-cache",
    "Content-Type: application/json"   
  ),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) 
{
  echo "cURL Error #:" . $err;
} 
else
{
  echo $response;
}

您可以使用自定义请求方法:

CURLOPT_CUSTOMREQUEST => "PUT"//GET,DELETE

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

  

一种自定义请求方法,用于在执行以下操作时代替“ GET”或“ HEAD”   HTTP请求。这对于执行“删除”或其他更晦涩的操作很有用   HTTP请求。

注意:

  

请务必确保服务器支持自定义,然后再执行此操作   首先请求方法。