工作需要,我負責收集服務器數據,然后定時向中心服務器發送。我看到了接口信息,需要設置heads頭信息,需要發送數據,且是post方式。
這里就用到了curl
1 //發送post請求 2 function request_post($url = '', $post_data = array()) { 3 if (empty($url) || empty($post_data)) { 4 return false; 5 } 6 $o = ""; 7 foreach ( $post_data as $k => $v ) 8 { 9 $o.= "$k=" . urlencode( $v ). "&" ; 10 } 11 $post_data = substr($o,0,-1); 12 $postUrl = $url; 13 $curlPost = $post_data; 14 $headers = array( 15 'User-Agent:lalalla', 16 'TICKET:lllllllllllljjaajaj' 17 ); 18 $ch = curl_init();//初始化curl 19 curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定網頁 20 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 21 curl_setopt($ch, CURLOPT_HEADER, 0);//設置header 22 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求結果為字符串且輸出到屏幕上 23 curl_setopt($ch, CURLOPT_POST, 1);//post提交方式 24 curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); 25 $data = curl_exec($ch);//運行curl 26 curl_close($ch); 27 return $data; 28 }
其中我遇到了問題,就是我向對方發送,對方沒有接到user-agent和ticket。這就肯定是這句的問題了
$headers = array( 'User-Agent:ereree', 'TICKET:sdfsdsf' );
或者下面這句的順序問題(當時我是這樣猜的)
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
后來發現我當初是這樣寫的
$headers = array( 'User-Agent' => 'ererere3', 'TICKET' => 'tttttttttttttttt' );
經常遇到curl,得學習一下里面的具體內容了