如何从POST切换在PHP卷曲GET(How to switch from POST to GET

2019-06-17 23:55发布

我试图从以前的POST请求Get请求切换。 它假定它是一个获取,但最终做了文章。

我试图在PHP如下:

curl_setopt($curl_handle, CURLOPT_POSTFIELDS, null);
curl_setopt($curl_handle, CURLOPT_POST, FALSE);
curl_setopt($curl_handle, CURLOPT_HTTPGET, TRUE);

我在想什么?

其他信息:我已经有了的设置做一个POST请求的连接。 这成功,但后来完成,当我尝试重用连接和切换回使用setopts它上面最终还是在内部做一个POST不完整的POST头就搞定了。 问题是,它认为它做一个GET但最终把一个POST头没有内容长度参数和连接失败戕411错误。

Answer 1:

确保你把你的查询字符串在您的网址的结尾做一个GET请求时。

$qry_str = "?x=10&y=20";
$ch = curl_init();

// Set query data here with the URL
curl_setopt($ch, CURLOPT_URL, 'http://example.com/test.php' . $qry_str); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
$content = trim(curl_exec($ch));
curl_close($ch);
print $content;
With a POST you pass the data via the CURLOPT_POSTFIELDS option instead 
of passing it in the CURLOPT__URL.
-------------------------------------------------------------------------

$qry_str = "x=10&y=20";
curl_setopt($ch, CURLOPT_URL, 'http://example.com/test.php');  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);

// Set request method to POST
curl_setopt($ch, CURLOPT_POST, 1);

// Set query data here with CURLOPT_POSTFIELDS
curl_setopt($ch, CURLOPT_POSTFIELDS, $qry_str);

$content = trim(curl_exec($ch));
curl_close($ch);
print $content;

从注curl_setopt()文档的CURLOPT_HTTPGET (强调):

[设置CURLOPT_HTTPGET等于] TRUE 重置 HTTP请求方法来获取。
由于得到的是默认的,这仅仅是必要的,如果请求的方法已经改变。



Answer 2:

调用curl_exec之前加入这个($ curl_handle)

curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'GET');


Answer 3:

解决:问题就出在这里:

我设置POST同时通过_CUSTOMREQUEST_POST_CUSTOMREQUEST坚持为POST_POST切换到_HTTPGET 。 服务器假设从标题_CUSTOMREQUEST是正确的,带回来一个411。

curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'POST');


Answer 4:

默认情况下,卷曲的请求是GET,你没有设置任何的选项,使一个GET请求,卷曲。



文章来源: How to switch from POST to GET in PHP CURL
标签: php post curl get