php网络请求学习


     一、 file_get_contents 函数用法


            1、以GET方式来发送网络请求, 写了两个方法,一个客户端函数,一个服务器端函数,请求的时候加了   一个参数userid,并输出useid  


   //客服端
    public function test(){
        //url地址
        $url="http://localhost/xcy/index.php/Home/inter/server/userid/3";
        //发送网络请求
        $str=file_get_contents($url);
        //输出从服务器端返回的内容
        echo $str;
    }

    //服务端
    public function server(){
        //以GET接收客户端发过来的userid参数
        $userid=I('get.userid');
        echo $userid;
    }

            

             2以POST方式来发送网络请求, 并发送了两个参数,一个为name 一个为age


   /*
     * 客户端代码
     * @param name 姓名
     * @param age 年龄
     * 请求方式 POST
     */
    public function test(){
        //设置页面编码为utf-8
        header('Content-type:text/html;charset=utf-8');
        //设置要请求的url地址
        $url="http://localhost/xcy/index.php/Home/inter/server";
        //设置请求服务器的参数
        $data=array('name'=>'luohua','age'=>24);
        //将data数组转换为URL-encode 之后的请求字符串 例如:name=luohua&age=24 返回一个字符串
        $data=http_build_query($data);
        //构建请求的头和内容
        $opt=array(
            'http'=>array(
                //请求方式
                'method'=>'POST',
                //请求数据大小
                'content-length'=>strlen($data).'\r\n',
                //请求的数据
                'content'=>$data
            )
        );

        //创建一个文本流并应用各种选项,可用于file_get_content fopen等过程的设置、代理服务器等
        $context=stream_context_create($opt);
        //发送请求,并设置对应选项,第一个参数为地址,第二个参数不在include搜索,第三个参数规定句柄
        $str=file_get_contents($url,false,$context);
        //输出服务器返回的信息
        echo $str;
    }

    /*
     * 服务器端代码
     */
    public function server(){
        //以post方式接收name参数
        $name=I('post.name');
        //以post方式接收age 参数
        $age=I('post.age');
        //输出
        echo "我的名字叫:".$name." 我今年".$age.'岁了';
    }



     二、 fopen 函数用法

    /*
     * 客户端
     */
    public function fopentest(){
        //设置页面编码
        header("Content-type:text/html;charset=utf-8");
        //设置请求的url地址
        $url="http://localhost/xcy/index.php/Home/test/fopenserver";
        //打开url地址,并且以只读方式打开
        $fp=fopen($url,'r');
        // 从封装协议文件指针中取得报头/元数据
        stream_get_meta_data($fp);
        //读取文件内容并返回一个字符串
        while(!feof($fp)){
            $result.=fgets($fp,1024);
        }
        //输出
        echo $result;
        //关闭资源
        fclose($fp);
    }


    /*
     * 服务器端
     */
    public function fopenserver(){
        echo '从服务器端返回的数据';
    }



     三、 CURL 扩展用法

              cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。                 最爽的是,PHP也支持 cURL 库   

              cURL的建立步骤如下:

             (1)初始化                curl_init()

             (2)设置变量            curl_setopt() 

             (3)执行并获取结果  curl_exec()

             (4)释放cURL句柄    curl_close()

             1、以GET方式来发送网络请求

    /*
     * curl客户端
     * 请求方式 GET
     */
    public function curlget(){
         //设置页面编码
        header("Content-type:text/html;charset=utf-8");
        //设置请求的url地址
        $url="http://localhost/xcy/index.php/Home/test/curlserver";
        //curl初始化
        $ch=curl_init();
        
        //设置url地址
        curl_setopt($ch,CURLOPT_URL,$url);
        //如果成功只将结果返回,不自动输出任何内容
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        //CURLOPT_HTTPHEADER来配置设置host访问
        curl_setopt($ch,CURLOPT_HEADER,0);

        //成功时返回 TRUE, 或者在失败时返回 FALSE。 然而,如果 CURLOPT_RETURNTRANSFER选项被设置,函数执行成功时会返回执行的结果,失败时返回 FALSE 
        $str=curl_exec($ch);

        //释放CURL资源
        curl_close($ch);

        //输出
        echo $str;



    }


    /*
     * curl服务器端
     */
    public function curlserver(){
        echo 'this is test';
    }


            2以POST方式来发送网络请求

             post过去的参数可以是数组格式的,可以是字符串、xml

    /*
     * curl客户端
     * 请求方式 POST
     */
    public function curlpost(){
         //设置页面编码
        header("Content-type:text/html;charset=utf-8");
        //设置请求的url地址
        $url="http://localhost/xcy/index.php/Home/test/curlserver";
        //post请求的数据
        $post_data = array('user'=>'luohua','age'=>24);
        //curl初始化
        $ch=curl_init();
        
        //设置url地址
        curl_setopt($ch,CURLOPT_URL,$url);
        //如果成功只将结果返回,不自动输出任何内容
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        //设置为POST方式
        curl_setopt($ch, CURLOPT_POST, 1);
        //设置为要post的数据
	    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
      
        

        //成功时返回 TRUE, 或者在失败时返回 FALSE。 然而,如果 CURLOPT_RETURNTRANSFER选项被设置,函数执行成功时会返回执行的结果,失败时返回 FALSE 
        $str=curl_exec($ch);

        //释放CURL资源
        curl_close($ch);

        //输出
        echo $str;



    }


    /*
     * curl服务器端
     */
    public function curlserver(){
        $user=I('post.user');
        $age=I('post.age');
        echo '我的名字叫'.$user.'--我的年龄是'.$age;
    }


你可能感兴趣的:(php网络请求学习)