本文目录一览:
- 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