最近公司運營平臺由於要接通另一個服務端的接口,要求模擬HTTP POST 提交數據。好久沒有寫過CURL了,特地上官網查了下文檔以及複習下HTTP POST參數所表明的含義,根據HTTP POST參數所要求模擬的一個POST請求,發放出來給你們共同交流學習。代碼的註釋是app
/* * [Content-Length] => 48 * [Content-Type] => application/x-www-form-urlencoded * [Accept] => *\/* * [User-Agent] => Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.15 * [Host] => localhost ) */ public static function doCurlPostRequest($url,$post_data){ $postData = http_build_query($post_data); $curl = curl_init(); //SET POST REQUEST LINE curl_setopt($curl, CURLOPT_URL, $url);//SET URL curl_setopt($curl, CURLOPT_POST, true);//SET POST //SET HEADER curl_setopt($curl, CURLOPT_USERAGENT,'Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.15');//CLINET BROW curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //STOP VVERIFYING CERTIFICATE curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); //NOT OUTPUT curl_setopt ($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));//HEARD MIME curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);//FORWARD IS TRUE //SET POST DATA curl_setopt($curl, CURLOPT_POSTFIELDS, $postData); $output = curl_exec($curl); if ($output == NULL) { return 0; } curl_close($curl); return $output; } /* * OUTPUT HEADERS */ public function getallheaders() { foreach ($_SERVER as $name => $value) { if (substr($name, 0, 5) == 'HTTP_') { $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; } } return $headers; }