我试图从以前的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 ERROR。

有帮助吗?

解决方案 3

解决:问题就出在这里:

我经由两个POST_CUSTOMREQUEST设置_POST_CUSTOMREQUEST持久化为POST_POST切换到_HTTPGET。服务器假定从_CUSTOMREQUEST报头是正确的一个,并用411回来。

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

其他提示

请确保你把你的查询字符串在您的网址的结尾做一个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请求方法得到的。点击   由于得到的是默认的,这仅仅是必要的,如果请求的方法已经改变。

调用curl_exec之前添加本($ curl_handle)

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top