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

 我来答
miniappG3tWbErJ8eKqn
2017-07-15 · TA获得超过873个赞
知道小有建树答主
回答量:290
采纳率:84%
帮助的人:80万
展开全部

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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式