轉自黎明互聯:PHP使用curl請求https站點的常見錯誤及解決方案.
目前不管是移動端的API還是調用衆多服務商(微信、微博、銀行等)的接口大多數都是基於RESTful風格。下面就介紹如何使用PHP基於RESTful風格上傳文件或POST字符串。
上傳文件代碼示例:
$url = '提交地址';
//$postfields = file_get_contents('文件路徑或者文件名');
$ch = curl_init();
$params[CURLOPT_URL] = $url; //請求url地址
$params[CURLOPT_HEADER] = true; //是否返回響應頭信息
$params[CURLOPT_RETURNTRANSFER] = true; //是否將結果返回
$params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向
$params[CURLOPT_POST] = true;
$params[CURLOPT_POSTFIELDS] = $postfields;
$params[CURLOPT_SSL_VERIFYPEER] = false;
$params[CURLOPT_SSL_VERIFYHOST] = false;
curl_setopt_array($ch, $params); //傳入curl參數
$content = curl_exec($ch); //執行
echo $content; //輸出登錄結果
curl_close($ch); //關閉連接
如果PHP作爲服務器端接收文件並保存可以使用如下代碼:
$bin_file = file_get_contents('php://input');
file_put_contents('文件保存路徑/文件名.擴展名');
如果使用PHP通過POST的方式提交xml或者json等格式的字符串可以使用如下代碼:
$url = '提交地址';
$postfields = 'XML或者JSON等字符串';
$ch = curl_init();
$headers = [
//"Content-Type:text/html;charset=UTF-8", "Connection: Keep-Alive"
];
$params[CURLOPT_HTTPHEADER] = $headers; //自定義header
$params[CURLOPT_URL] = $url; //請求url地址
$params[CURLOPT_HEADER] = true; //是否返回響應頭信息
$params[CURLOPT_RETURNTRANSFER] = true; //是否將結果返回
$params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向
$params[CURLOPT_POST] = true;
$params[CURLOPT_POSTFIELDS] = $postfields;
$params[CURLOPT_SSL_VERIFYPEER] = false;
$params[CURLOPT_SSL_VERIFYHOST] = false;
curl_setopt_array($ch, $params); //傳入curl參數
$content = curl_exec($ch); //執行
echo $content; //輸出登錄結果
curl_close($ch); //關閉連接
接收字符串數據只需使用:
file_get_contents('php://input');