在很多時候,我們都需要請求第三方的服務器來獲取一些數據,比如token,比如百度的主動推送,那么我們的php如何實現向第三方服務器發請求呢?我們可以通過curl來實現
首先定義請求的url,然后創建httpHeader的頭,定義通過post方式發送請求的參數:
初始化curl:
1 $url="URL地址"; 2 3 //然后創建httpHeader的頭: 4 5 $httpHeader=createHttpHeader(); 6 7 //定義通過post方式發送請求的參數: 8 9 $curlPost="userId=".$userId."&name=".$nickName."&portraitUri=".$headImg; 10 11 //初始化curl: 12 13 $ch=curl_init();undefined
發送請求:
1 curl_setopt($ch,CURLOPT_URL,$url); 2 curl_setopt($ch,CURLOPT_HTTPHEADER,$httpHeader); 3 curl_setopt($ch,CURLOPT_HEADER,false); 4 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); 5 curl_setopt($ch,CURLOPT_POST,1); 6 curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost); 7 curl_setopt($ch,CURLOPT_TIMEOUT,30); 8 curl_setopt($ch,CURLOPT_DNS_USE_GLOBAL_CACHE,false); 9 curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);undefined
接收返回的數據:$data=curl_exec($ch);關閉curl:curl_close($ch);這樣就通過curl完成了一次post請求,並獲取到了返回的數據。
完整PHP源碼如下:
1 $url="請求的URL地址"; 2 $httpHeader=createHttpHeader(); 3 $curlPost="userId=".$userId."&name=".$nickName."&portraitUri=".$headImg; 4 $ch=curl_init(); 5 curl_setopt($ch,CURLOPT_URL,$url); 6 curl_setopt($ch,CURLOPT_HTTPHEADER,$httpHeader); 7 curl_setopt($ch,CURLOPT_HEADER,false); 8 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); 9 curl_setopt($ch,CURLOPT_POST,1); 10 curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost); 11 curl_setopt($ch,CURLOPT_TIMEOUT,30); 12 curl_setopt($ch,CURLOPT_DNS_USE_GLOBAL_CACHE,false); 13 curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 14 $data=curl_exec($ch); 15 curl_close($ch);undefined