本文目錄一覽:
- 1、PHP使用Curl向第三方接口發送文件信息
- 2、PHP_CURL使用詳解
- 3、php Curl的get和post方法
- 4、如何用PHP連接 curl方式的接口
- 5、php中如何調用接口以及編寫接口代碼詳解
- 6、PHP使用CURL請求https的微信統一下單接口時報錯,同樣的代碼我在另一台機器上運行是正常的
PHP使用Curl向第三方接口發送文件信息
業務需要用到自己服務器請求別人服務器傳輸文件,找了很久沒有找到相關文案。最後一個朋友指點給我說了,自己當做個記錄吧。
第三方服務器返回值:
至此大功告成~
PHP_CURL使用詳解
CURL是PHP的一個擴展,利用該擴展可以實現服務器之間的數據或文件傳輸,用來採集網絡中的html網頁文件、其他服務器提供接口數據等。
GET請求
POST請求
php Curl的get和post方法
get方法
function http_get($url)
{
$oCurl = curl_init();
if (stripos($url, “https://”) !== FALSE) {
curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
//curl_setopt($oCurl, CURLOPT_SSLVERSION, 1);
//CURL_SSLVERSION_TLSv1
}
curl_setopt($oCurl, CURLOPT_URL, $url);
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
$sContent = curl_exec($oCurl);
$aStatus = curl_getinfo($oCurl);
curl_close($oCurl);
if (intval($aStatus[“http_code”]) == 200) {
return $sContent;
} else {
return false;
}
}
post方法
// curlpost請求
function http_post($url, $data = NULL, $json = false)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
if (!empty($data)) {
if ($json is_array($data)) {
$data = json_encode($data);
}
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
if ($json) { //發送JSON數據
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt(
$curl,
CURLOPT_HTTPHEADER,
array(
‘Content-Type: application/json; charset=utf-8’,
‘Content-Length:’ . strlen($data)
)
);
}
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($curl);
$errorno = curl_errno($curl);
if ($errorno) {
return array(‘errorno’ = false, ‘errmsg’ = $errorno);
}
curl_close($curl);
return json_decode($res, true);
}
如何用PHP連接 curl方式的接口
-H 表示curl命令的header,對應php中可以使用:
$header = array(
“X-Udemy-Client-Id: MYCLIENTID”,
“X-Udemy-Client-Secret: MYCLIENTSECRET”,
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //$ch = curl_init($url);
更多關於curl的應用可以參考我的博客《PHP cURL 應用》
php中如何調用接口以及編寫接口代碼詳解
可以用curl獲取借樓的信息。
所謂接口,就是提供一個url,只要你滿足它要求的參數,就能得到你要的數據。比如你拿到一個接口,帶上所需的參數,複製到地址欄同樣能得到。不過最好用程序得到。file_get_contents也可以用,不過有局限性。所以我建議用curl。給你一個函數,挺好用的。
function request($url,$https=true,$method=’GET’,$data=null){
$ch = curl_init();//初始化,得到資源
curl_setopt($ch, CURLOPT_URL,$url); //請求數據的路徑
curl_setopt($ch, CURLOPT_HEADER,false);//是否輸出頭
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不直接輸出結果
//curl_setopt ($ch, CURLOPT_SAFE_UPLOAD, 0);//兼容php之後的版本
if($https){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //是否驗證主機
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //是否進行證書驗證
}
if($method==’POST’){
curl_setopt($ch, CURLOPT_POST, true); //POST傳輸
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //傳輸數據
}
$content_json = curl_exec($ch);
if ($content_json === false) {
return “網絡請求出錯: ” . curl_error($ch);
}
curl_close($ch);
return $content_json;
}
PHP使用CURL請求https的微信統一下單接口時報錯,同樣的代碼我在另一台機器上運行是正常的
我也遇到了同樣的問題,只要是走微信,偶爾都會請求不到,原來是正常的。今天排查了一天,終於找到了原因所在。
centos原生用的NSS,而不是OpenSSL,curl調用NSS庫請求https時偶爾會出現請求不到的情況。
解決方案:
參考網址:網頁鏈接
按步驟完成後記得重啟 php-fpm和nginx
原創文章,作者:BVKN,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/133082.html