1. /**
  2. * 模拟post进行url请求
  3. * @param string $url
  4. * @param string $param
  5. */
  6. function request_post($url = '', $param = '') {
  7. if (empty($url) || empty($param)) {
  8. return false;
  9. }
  10.  
  11. $postUrl = $url;
  12. $curlPost = $param;
  13. $ch = curl_init();//初始化curl
  14. curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页
  15. curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
  16. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
  17. curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
  18. curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
  19. $data = curl_exec($ch);//运行curl
  20. curl_close($ch);
  21.  
  22. return $data;
  23. }
  24.  
  25. 复制代码
  26.  
  27. 这是方法,
  28.  
  29. 下面是具体的调用案例。
  30. 复制代码
  31.  
  32. function testAction(){
  33. $url = 'http://mobile.jschina.com.cn/jschina/register.php';
  34. $post_data['appid'] = '10';
  35. $post_data['appkey'] = 'cmbohpffXVR03nIpkkQXaAA1Vf5nO4nQ';
  36. $post_data['member_name'] = 'zsjs123';
  37. $post_data['password'] = '123456';
  38. $post_data['email'] = 'zsjs123@126.com';
  39. $o = "";
  40. foreach ( $post_data as $k => $v )
  41. {
  42. $o.= "$k=" . urlencode( $v ). "&" ;
  43. }
  44. $post_data = substr($o,0,-1);
  45.  
  46. $res = $this->request_post($url, $post_data);
  47. print_r($res);
  48.  
  49. }
  50.  
  51. 复制代码
  52.  
  53. 这样就提交请求,并且获取请求结果了。一般返回的结果是json格式的。
  54.  
  55. 这里的post是拼接出来的。
  56.  
  57. 也可以改造成下面的方式。
  58. 复制代码
  59.  
  60. /**
  61. * 模拟post进行url请求
  62. * @param string $url
  63. * @param array $post_data
  64. */
  65. function request_post($url = '', $post_data = array()) {
  66. if (empty($url) || empty($post_data)) {
  67. return false;
  68. }
  69.  
  70. $o = "";
  71. foreach ( $post_data as $k => $v )
  72. {
  73. $o.= "$k=" . urlencode( $v ). "&" ;
  74. }
  75. $post_data = substr($o,0,-1);
  76.  
  77. $postUrl = $url;
  78. $curlPost = $post_data;
  79. $ch = curl_init();//初始化curl
  80. curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页
  81. curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
  82. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
  83. curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
  84. curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
  85. $data = curl_exec($ch);//运行curl
  86. curl_close($ch);
  87.  
  88. return $data;
  89. }
  90.  
  91. 复制代码
  92.  
  93. 将拼接也封装了起来,这样调用的时候就更简洁了。
  94. 复制代码
  95.  
  96. function testAction(){
  97. $url = 'http://mobile.jschina.com.cn/jschina/register.php';
  98. $post_data['appid'] = '10';
  99. $post_data['appkey'] = 'cmbohpffXVR03nIpkkQXaAA1Vf5nO4nQ';
  100. $post_data['member_name'] = 'zsjs124';
  101. $post_data['password'] = '123456';
  102. $post_data['email'] = 'zsjs124@126.com';
  103. //$post_data = array();
  104. $res = $this->request_post($url, $post_data);
  105. print_r($res);
  106.  
  107. }
  108.  
  109. 复制代码

php模拟post提交请求与调用接口的更多相关文章

  1. [转]php模拟post提交请求,调用接口

    本文转自:https://www.cnblogs.com/jiqing9006/p/3949190.html /** * 模拟post进行url请求 * @param string $url * @p ...

  2. php模拟post提交请求,调用接口

    /** * 模拟post进行url请求 * @param string $url * @param string $param */ function request_post($url = '', ...

  3. Java模拟http请求远程调用接口工具类

    package ln; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea ...

  4. post 方式提交XML文件调用接口

    import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Date; import java. ...

  5. php通过CURL模拟post提交请求

    <?php header("Content-type:text/html;charset=utf-8"); class Test{ public function reque ...

  6. Java发送http get/post请求,调用接口/方法

    由于项目中要用,所以找了一些资料,整理下来. GitHub地址: https://github.com/iamyong    转自:http://blog.csdn.net/capmiachael/a ...

  7. php通过CURL模拟get提交请求

    方式一: $host = "http://jisunews.market.alicloudapi.com"; $path = "/news/get"; $met ...

  8. C# 通过模拟http请求来调用soap、wsdl

    C#调用webservice的方法很多,我说的这种通过http请求模拟来调用的方式是为了解决C#调用java的远程API出现各种不兼容问题. 由于远程API不在我们的控制下,我们只能修改本地的调用代码 ...

  9. C#调用接口注意要点 socket,模拟服务器、客户端通信 在ASP.NET Core中构建路由的5种方法

    C#调用接口注意要点   在用C#调用接口的时候,遇到需要通过调用登录接口才能调用其他的接口,因为在其他的接口需要在登录的状态下保存Cookie值才能有权限调用, 所以首先需要通过调用登录接口来保存c ...

随机推荐

  1. Xtrabackup—InnoDB实现mysql热备份

    前面Zabbix使用的数据库是mysql,数据库备份不用多说,必须滴,由于使用的是innodb引擎,既然做,那就使用第三方强大的Xtrabackup工具来热备吧,Xtrabackup的说明,参见htt ...

  2. Eigen教程(11)

    整理下Eigen库的教程,参考:http://eigen.tuxfamily.org/dox/index.html 存储顺序 对于矩阵和二维数组有两种存储方式,列优先和行优先. 假设矩阵: 按行优先存 ...

  3. Java Web项目部署时 “Exploded Archive”模式部署时无效

    在myeclipse中部署项目时,当Deploy type为Exploded Archive(deveplopment mode)时,finish按钮为灰色,无法部署的解决方法: 1.project上 ...

  4. [转]mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集

    原文地址:https://www.cnblogs.com/wuyun-blog/p/5769096.html 需求: 1.直接执行前端传来的任何sql语句,parameterType="St ...

  5. 联通GWH-01路由猫超级用户登录方法

    . . . . . 今天回老家,家里用的是联通GWH-01路由猫,上海贝尔的.用路由器背面说明上面写的user用户登录之后,发现只能查看却无法设置.为了开启无线路由功能,只好在网上查找超级用户,是cu ...

  6. 李炎恢的课程中心(JQUERY视频)

    http://edu.51cto.com/lecturer/user_id-3987533-page-2.html

  7. maven jar包上传到服务器

    maven jar包上传到服务器时出现pom文件没有上传上去,致使该jar包再被使用的时候没有依赖,jar包调用出错 解决办法,将pom文件一起deploy上去 mvn deploy:deploy-f ...

  8. Java编程的逻辑 (40) - 剖析HashMap

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  9. 【oneday_onepage】——Tastes differ!

    You know Ian and Felton can be really boring sometimes. They're always arguing, like. like children. ...

  10. Nodejs中export的作用

    在上一节,我们编写了一个hello.js文件,这个hello.js文件就是一个模块,模块的名字就是文件名(去掉.js后缀),所以hello.js文件就是名为hello的模块. 我们把hello.js改 ...