题
我试图从以前的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请求,卷曲
不隶属于 StackOverflow