永发信息网

如何从一个php文件向另一个地址post数据

答案:1  悬赏:70  手机版
解决时间 2021-03-21 20:27
  • 提问者网友:人生佛魔见
  • 2021-03-21 03:09
如何从一个php文件向另一个地址post数据
最佳答案
  • 五星知识达人网友:千夜
  • 2021-03-21 04:00
php调接口都是通过curl来完成的。
下面是我项目中的一个方法:
$url 是要post的地址
$params 是参数,格式array('参数1'=>'参数1值','参数2'=>'参数2值')
$header 请求头,如果模拟浏览器访问需要

$timeout 超时时间

//公共获取指定网页内容
function curl($url,$params = array(),$header = array(),$timeout = 180){
    if(empty($url)) return $url;

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL,$url);//请求url地址

    curl_setopt($curl, CURLOPT_HTTPHEADER , $header );  //构造IP

    if(!empty($params) && count($params) > 0){
        curl_setopt($curl, CURLOPT_POST, true);

        //Request Payload格式数据
        if(isset($params['is_json']) && $params['is_json'] === true){
            unset($params['is_json']);
            $params = json_encode($params);
        }else{
            $params = http_build_query($params);
        }
        curl_setopt($curl, CURLOPT_POSTFIELDS, $params);        
    }

    //curl_setopt($curl, CURLOPT_HEADER, true);//是否返回响应头信息
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//是否将结果返回
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);//是否重定向
    //curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36');
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);   // 只信任CA颁布的证书  
    //curl_setopt($curl, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布)  
    //curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配  
    // 从证书中检查SSL加密算法是否存在
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); 
    //curl_setopt($curl, CURLOPT_HTTPHEADER, array("Expect: ")); 
    curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);//用来告诉PHP脚本在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载,下线,或者崩溃等可能状况;
    curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);//用来告诉成功PHP脚本,从服务器接收缓冲完成前需要等待多长时间。如果目标是个巨大的文件,生成内容速度过慢或者链路速度过慢,这个参数就会很有用。
    // 自动设置Referer
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
    //curl_setopt($curl, CURLOPT_COOKIEJAR, "D:\phpStudy\WWW\cj\cooBE66.tmp");// //写入cookie信息
    //setcookie('cookie_jar', $cookie_jar); //保存cookie路径
    $data = curl_exec($curl); //执行    
    curl_close($curl);
    return $data;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯