我正在尝试使用PHP cURL将一些数据发布到使用虚拟主机来创建自定义域http://example.local
的本地站点,但结果似乎是Moved Permanently
。我怎么能让这个工作?
这是我目前的代码:
$url = "http://example.local/paypal_ipn.php"
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, substr_count($req,'&')+1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $req);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
我尝试将CURLOPT_FOLLOWLOCATION
设置为true,但这样就没有POST数据了。
答案 0 :(得分:21)
试试吧
//** add options **//
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, "your_var");
curl_setopt($curl, CURLOPT_POSTREDIR, 3);
curl_exec($curl);
答案 1 :(得分:10)
使用CURLOPT_CUSTOMREQUEST
代替CURLOPT_POST
;
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
还有一个,你需要添加
curl_setopt($curl, CURLOPT_POSTREDIR, 3);
3表示follow redirect with the same type of request both for 301 and 302 redirects.
通过这样做,第二个请求也将作为POST请求。请注意,CURLOPT_POSTREDIR
在PHP 5.3.2 here