如何在PHP CURL中从POST切换到GET

我尝试从之前的Post请求切换到Get请求。 这假定它是一个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 GET仍然结束了POST内部不完整POST头。 问题是它相信它做了一个GET,但结束了一个没有content-length参数的POST头,连接失败了411错误。

确保在执行GET请求时将查询string放在URL的末尾。

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

 //在这里用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);
打印$内容;
通过POST,您可以通过CURLOPT_POSTFIELDS选项传递数据 
通过它在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);

 //将请求方法设置为POST
 curl_setopt($ ch,CURLOPT_POST,1);

 //用CURLOPT_POSTFIELDS在这里设置查询数据
 curl_setopt($ ch,CURLOPT_POSTFIELDS,$ qry_str);

 $ content = trim(curl_exec($ ch));
 curl_close($ CH);
打印$内容;

来自curl_setopt()CURLOPT_HTTPGET 文档的注意事项(强调添加):

[设置CURLOPT_HTTPGET等于] TRUE将HTTP请求方法重置为GET。
由于GET是默认的,所以只有在请求方法被改变时才需要。

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

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

解决:问题在于:

我通过_CUSTOMREQUEST_POST设置了POST_CUSTOMREQUEST切换到_HTTPGET_CUSTOMREQUEST保持为POST 。 服务器假设从_CUSTOMREQUEST头是正确的,并回来了一个411。

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

CURL请求默认为GET,您不必设置任何选项来进行GET CURL请求。

这是一个相当不错的例子:

http://www.weberdev.com/get_example-4606.html