一、 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; }