• php post


    post form

    function post($remote_server,$data,$second=60){
    
    $ch = curl_init();
    if(is_string($data)){
    $this_header = ["content-type: application/x-www-form-urlencoded;charset=UTF-8"];# 如果$data是字符串,则Content-Type是application/x-www-form-urlencoded

    }else{
    $this_header = ["content-type: multipart/form-data;charset=UTF-8"];# 如果$data是k=>v的数组,则Content-Type是multipart/form-data,
    }
    curl_setopt($ch,CURLOPT_HTTPHEADER,$this_header); curl_setopt($ch, CURLOPT_URL, $remote_server); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_TIMEOUT,$second);
    curl_setopt($curl, CURLOPT_DNS_USE_GLOBAL_CACHE, false);

      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    $data = curl_exec($ch);
    $code = curl_errno($ch);
    $curl_getinfo=curl_getinfo($ch);
    $http_status =$curl_getinfo['http_code'];//获取状态码
    curl_close($ch);
    if ($code==0&&$http_status==200){
    return $data;
    }elseif($code==28){
    throw new Exception("超时重试");
    }elseif($http_status==404){
    throw new Exception("访问地址错误");
    }elseif($http_status==500){
    throw new Exception("内部系统错误");
    }else{
    throw new Exception("获取数据失败");
    }
    
    }

    $url = 'http://';  //调用接口的平台服务地址

    $post_string = array('a'=>'b');

    post($url,$post_string);

     

    post xml

        function post_xml($urn,$xmlStr){
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $urn);    // 设置你准备提交的URL 
            $post_data = array(
                    "content" => $xmlStr
            );
            curl_setopt($curl, CURLOPT_POST, true);  // 设置POST方式提交
            curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//判断是否接收返回值,0:不接收,1:接收
            $data = curl_exec($curl); // 运行curl,请求网页, 其中$data为接口返回内容
            curl_close($curl);        // 关闭curl请求
            return $data;
    }

    post json

     protected function post($remote_server,$post_string=null,$second=60){
            $ch = curl_init();
            $header =array("Content-type: application/json;charset="utf-8"","Accept: application/json");
            curl_setopt($ch, CURLOPT_URL, $remote_server);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_HEADER, true);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
            curl_setopt($ch, CURLOPT_TIMEOUT,$second); 
            $data = curl_exec($ch);
            $code = curl_errno($ch);
            $curl_getinfo=curl_getinfo($ch);
            $http_status =$curl_getinfo['http_code'];//获取状态码
            curl_close($ch);
            if ($code==0&&$http_status==200){
                $headerSize = $curl_getinfo['header_size'];//得到报文头长度
                $header= substr($data, 0, $headerSize);//获取header信息
                $data= substr($data, $headerSize);//获取body信息
               if (preg_match('/ApiServerName:(.*?)
    /', $header, $result)) {
                  $_SERVER['ApiServerName']=trim($result[1]);
                }
                $proxyInfo=$http_status=$headerSize=$header=$result=null;
                if(substr($data, 0,10)==='{"Code":"H'){
                    $start=strpos($data, 'H');
                    $end=strpos($data, '|')-$start;
                    $_SERVER['ErrorCode']=substr($data,$start,$end);
                }
               return $data;
            }elseif($code==28){
               throw new AException("超时重试",203010201);
            }elseif($http_status==404){
               throw new AException("地址错误",103010202);
            }elseif($http_status==500){
               throw new AException("系统错误",103010202);
            }else{
               throw new AException("获取数据失败",103010203);
            }
            
        }

    file_get_content post

    $data = array ('foo' => 'bar');
    $data = http_build_query($data);
    $opts = array (
    'http' => array (
    'method' => 'POST',
    'header'=> "Content-type: application/x-www-form-urlencodedrn" .
    "Content-Length: " . strlen($data) . "rn",
    'content' => $data
    )
    );
    $context = stream_context_create($opts);
    $html = file_get_contents('http://localhost/e/admin/test.html', false, $context);
    echo $html;

    sockopen 以POST方式获取完整的数据

    /** 
    * Socket版本 
    * 使用方法: 
    * $post_string = "app=socket&version=beta"; 
    * request_by_socket('jb51.net','/restServer.php',$post_string); 
    */ 
    function request_by_socket($remote_server,$remote_path,$post_string,$port = 80,$timeout = 30){ 
    $socket = fsockopen($remote_server,$port,$errno,$errstr,$timeout); 
    if (!$socket) die("$errstr($errno)"); 
    fwrite($socket,"POST $remote_path HTTP/1.0"); 
    fwrite($socket,"User-Agent: Socket Example"); 
    fwrite($socket,"HOST: $remote_server"); 
    fwrite($socket,"Content-type: application/x-www-form-urlencoded"); 
    fwrite($socket,"Content-length: ".strlen($post_string)+8.""); 
    fwrite($socket,"Accept:*/*"); 
    fwrite($socket,""); 
    fwrite($socket,"mypost=$post_string"); 
    fwrite($socket,""); 
    $header = ""; 
    while ($str = trim(fgets($socket,4096))) { 
    $header.=$str; 
    } 
    $data = ""; 
    while (!feof($socket)) { 
    $data .= fgets($socket,4096); 
    } 
    return $data; 
    } 
  • 相关阅读:
    sweep line 扫描线模型
    双指针&整数二分思路总结
    ELF文件格式
    flask-migrate数据库迁移出现sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (2059, <NULL>)
    腾讯面试题
    zabbix 调用飞书发送消息
    NFS服务部署
    Linux系统启动
    电商系统nuxt的布局目录代码分享
    电商系统中进行流量控制
  • 原文地址:https://www.cnblogs.com/wangxusummer/p/4481602.html
Copyright © 2020-2023  润新知