我試過搜索,其他答案沒有幫助我。CURL不會正確發送POSTFIELDS到一些服務器
我試圖通過cURL發送POST數據,但它只能在的某些服務器上工作。是什麼賦予了?
我已經試過:
if (!empty($data) && $usePost) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
$data
包含的products
鍵和一個JSON字符串的值的數組。
我也試過明確使用查詢:
if (!empty($data) && $usePost) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
}
但儘管如此,$_POST
接收服務器上給我NULL
。
不知道該怎麼辦?
這裏是整個方法:
public static function execCommand($command, $ch,$data=array(),$cookie_file='genCookie.txt', $usePost = false) {
$url = $command;
if (!empty($data) && !$usePost)
$url .= '?' . http_build_query($data);
elseif (isset($data['sessionid'])) {
$url .= '?sessionid=' . $data['sessionid'];
unset($data['sessionid']);
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if (!empty($data) && $usePost) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
return curl_exec($ch);
}
我試圖呼應$_REQUEST
,所以錯誤不是在$_GET
。我也試過file_get_contents('php://input')
,但還是一無所獲。
發送和接收端都在Apache服務器上。
更大的問題是,它的工作對最服務器,但只有一些是忽略它。有沒有更安全,更跨平臺的方式來做到這一點?
_What_服務器? IIS? Apache HTTPD? –
你能粘貼你的完整捲曲設置塊嗎? –
已更新。雙方都是Apache,當它發生時代碼在原始問題 – casraf