1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
      * 模拟post进行url请求
      * @param string $url
      * @param string $param
      */
     function  request_post( $url  '' $param  '' ) {
         if  ( empty ( $url ) ||  empty ( $param )) {
             return  false;
         }
         
         $postUrl  $url ;
         $curlPost  $param ;
         $ch  = curl_init(); //初始化curl
         curl_setopt( $ch , CURLOPT_URL, $postUrl ); //抓取指定网页
         curl_setopt( $ch , CURLOPT_HEADER, 0); //设置header
         curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1); //要求结果为字符串且输出到屏幕上
         curl_setopt( $ch , CURLOPT_POST, 1); //post提交方式
         curl_setopt( $ch , CURLOPT_POSTFIELDS,  $curlPost );
         $data  = curl_exec( $ch ); //运行curl
         curl_close( $ch );
         
         return  $data ;
     }

这是方法,下面是具体的调用案例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function  testAction(){
         $url  'http://mobile.jschina.com.cn/jschina/register.php' ;
         $post_data [ 'appid' ]       =  '10' ;
         $post_data [ 'appkey' ]      =  'cmbohpffXVR03nIpkkQXaAA1Vf5nO4nQ' ;
         $post_data [ 'member_name' ] =  'zsjs123' ;
         $post_data [ 'password' ]    =  '123456' ;
         $post_data [ 'email' ]    =  'zsjs123@126.com' ;
         $o  "" ;
         foreach  $post_data  as  $k  =>  $v 
        
             $o .=  "$k="  . urlencode(  $v  ).  "&"  ;
         }
         $post_data  substr ( $o ,0,-1);
 
         $res  $this ->request_post( $url $post_data );       
         print_r( $res );
 
     }

这样就提交请求,并且获取请求结果了。一般返回的结果是json格式的。

这里的post是拼接出来的。

也可以改造成下面的方式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
      * 模拟post进行url请求
      * @param string $url
      * @param array $post_data
      */
     function  request_post( $url  '' $post_data  array ()) {
         if  ( empty ( $url ) ||  empty ( $post_data )) {
             return  false;
         }
         
         $o  "" ;
         foreach  $post_data  as  $k  =>  $v 
        
             $o .=  "$k="  . urlencode(  $v  ).  "&"  ;
         }
         $post_data  substr ( $o ,0,-1);
 
         $postUrl  $url ;
         $curlPost  $post_data ;
         $ch  = curl_init(); //初始化curl
         curl_setopt( $ch , CURLOPT_URL, $postUrl ); //抓取指定网页
         curl_setopt( $ch , CURLOPT_HEADER, 0); //设置header
         curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1); //要求结果为字符串且输出到屏幕上
         curl_setopt( $ch , CURLOPT_POST, 1); //post提交方式
         curl_setopt( $ch , CURLOPT_POSTFIELDS,  $curlPost );
         $data  = curl_exec( $ch ); //运行curl
         curl_close( $ch );
         
         return  $data ;
     }

将拼接也封装了起来,这样调用的时候就更简洁了。

1
2
3
4
5
6
7
8
9
10
11
12
function  testAction(){
         $url  'http://mobile.jschina.com.cn/jschina/register.php' ;
         $post_data [ 'appid' ]       =  '10' ;
         $post_data [ 'appkey' ]      =  'cmbohpffXVR03nIpkkQXaAA1Vf5nO4nQ' ;
         $post_data [ 'member_name' ] =  'zsjs124' ;
         $post_data [ 'password' ]    =  '123456' ;
         $post_data [ 'email' ]    =  'zsjs124@126.com' ;
         //$post_data = array();
         $res  $this ->request_post( $url $post_data );       
         print_r( $res );
 
     }