详解php用curl调用接口方法,get和post两种方式


Posted in PHP onJanuary 13, 2017

首先是客户端执行方法ApiModel.php:

<?php 
/**
   * 模拟post进行url请求
   * @param string $url
   * @param array $post_data
   */
  function request_post($url = '',$ispost=true, $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);
    $key=md5(base64_encode($post_data));
    if($ispost){
      $url=$url;
    }else{
      $url = $url.'?'.$post_data;
    }
    
    
    $curlPost = 'key='.$key;
    header("Content-type: text/html; charset=utf-8");
    $ch = curl_init();//初始化curl
    curl_setopt($ch, CURLOPT_URL,$url);//抓取指定网页
    curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
    if($ispost){
      curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
      curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
    }
    $data = curl_exec($ch);//运行curl
    curl_close($ch);
    return $data;
  }
  ?>

客户端调用方法,可以在此配置基本信息api.php:

<?php 
require 'ApiModel.php';
function testAction(){
    $url = '接口地址';
    $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 = request_post($url,$ispost=true,$post_data);    
    print_r($res);

  }
testAction();
?>

服务器的接口函数test.php:

<?php 
function serverapi(){
  $key='57173d6ad842d807443ee0db91fed323';
  if($_GET&&$_GET['appkey']=='cmbohpffXVR03nIpkkQXaAA1Vf5nO4nQ'||$_POST&&$_POST['key']===$key){
    $arr=array('name'=>'huanglu','password'=>'123456');
    echo json_encode($arr);
  }else{
    exit('非法访问!');
  }
}
serverapi();
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php 文件上传代码(限制jpg文件)
Jan 05 PHP
php 短链接算法收集与分析
Dec 30 PHP
克隆一个新项目的快捷方式
Apr 10 PHP
解析PHP中常见的mongodb查询操作
Jun 20 PHP
php合并js请求的例子
Nov 01 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
Dec 25 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
Nov 04 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
Sep 02 PHP
php自定义时间转换函数示例
Dec 07 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
php策略模式简单示例分析【区别于工厂模式】
Sep 25 PHP
PHP编程 SSO详细介绍及简单实例
Jan 13 #PHP
php 解决扫描二维码下载跳转问题
Jan 13 #PHP
PHP使用递归算法无限遍历数组示例
Jan 13 #PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 #PHP
PHP使用strrev翻转中文乱码问题的解决方法
Jan 13 #PHP
使用php完成常见的文件上传功能(推荐)
Jan 13 #PHP
Yii2实现增删改查后留在当前页的方法详解
Jan 13 #PHP
You might like
php GUID生成函数和类
2014/03/10 PHP
php+mysql大量用户登录解决方案分析
2014/12/29 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
joomla组件开发入门教程
2016/05/04 PHP
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
javascript重写alert方法的实例代码
2013/03/29 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
浅谈JavaScript中的String对象常用方法
2015/02/25 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
vue2.x select2 指令封装详解
2017/10/12 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
[29:10]Ti4 冒泡赛第二天 NEWBEE vs Titan 3
2014/07/15 DOTA
Python使用py2exe打包程序介绍
2014/11/20 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
Django如何实现上传图片功能
2019/08/16 Python
基于python requests selenium爬取excel vba过程解析
2020/08/12 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
经理管理专业自荐信范文
2013/12/31 职场文书
部队党性分析材料
2014/02/16 职场文书
公司管理建议书范文
2014/03/12 职场文书
副校长竞聘演讲稿
2014/09/01 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
Java移除无效括号的方法实现
2021/08/07 Java/Android