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

首先是客户端执行方法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‘]    = ‘[email protected]‘;
        //$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();
?>
时间: 2024-11-12 10:06:20

php用curl调用接口方法,get和post两种方式的相关文章

Autofac 设置方法拦截器的两种方式

前提 1.Nuget安装Autofac 4.0以下版本  4.0及4.0 以上版本暂时没找到合适的方案 2.Nuget安装Autofac.Extras.DynamicProxy2 3.创建一个类似下面代码得 拦截类 public class TestInterceptor : IInterceptor { public void Intercept(IInvocation invocation) { string c = string.Format("Calling method {0} wit

使用工厂方法配置bean的两种方式

1.使用静态工厂方法: 对应的配置.xml文件: 2.通过实例工厂的方法来配置bean: 对应的xml文件:

ASP.NET MVC 方法View返回的两种方式

1.参数为字符串类型 例如我们在地址栏输入http://localhost:56431/Test/Index,会查找TestController类下的Index方法并执行,如下图 当我们返回字符串类型的参数的view的时候 会查找视图Views下Test下的aaa.cshtml并返回,如果没有该文件,会查找Shared文件夹下是否有,如果也没有,则会报错. 2.字符串类型和model类型 第一个参数“aaa”会去找View--Test下的aaa.cshtml,并将第2个model参数带入 注:当

java调用CXF WebService接口的两种方式

通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();        // 判断是否抛出异常        factory.getOutInterceptors().add(new LoggingInIntercept

python用requests和urllib2两种方式调用图灵机器人接口

最近从网上看见个有意思的图灵机器人,可以根据不同的信息智能回复,比如你发送一个"讲个笑话",它就会给你回复一个笑话,或者"北京天气"就可以回复天气情况,或者英文单词然后给你回复中文释义.官方文档中有php和java的调用方式,我就弄个python的吧. 注册获取API KEY 这一步很简单,直接注册一个账号就可以看到你的API KEY.这个KEY我们以后发送get请求的时候需要用到. Pythoh调用示例 掉用也比较简单,主要是模拟post 请求.然后解析 json

JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序

一.描述 自定义的类要按照一定的方式进行排序,比如一个Person类要按照年龄进行从小到大排序,比如一个Student类要按照成绩进行由高到低排序. 这里我们采用两种方式,一种是使用Comparable接口:让待排序对象所在的类实现Comparable接口,并重写Comparable接口中的compareTo()方法,缺点是只能按照一种规则排序. 另一种方式是使用Comparator接口:编写多个排序方式类实现Comparator接口,并重写新Comparator接口中的compare()方法,

Android提交数据到服务器的两种方式四种方法

Android应用开发中,会经常要提交数据到服务器和从服务器得到数据,本文主要是给出了利用http协议采用HttpClient方式向服务器提交数据的方法. /** * @author Dylan * 本类封装了Android中向web服务器提交数据的两种方式四种方法 */ public class SubmitDataByHttpClientAndOrdinaryWay { /** * 使用get请求以普通方式提交数据 * @param map 传递进来的数据,以map的形式进行了封装 * @p

vc++加载透明png图片方法——GDI+和CImage两种

vc++加载透明png图片方法——GDI+和CImage两种 在加载png时遇到了麻烦,后来用了两个方法解决了.一个是用GDI+,另外就是用vs.net MFC自带的CImage. 先看看GDI+的方法 方法1: 1.GDI+画透明图层(alpha)的png图片 stdafx加入如下: #include <comdef.h>//初始化一下com口 #include "GdiPlus.h" using namespace Gdiplus; #pragma comment(li

Python 实现接口类的两种方式+邮件提醒+动态导入模块+反射(参考Django中间件源码)

实现接口类的两种方式 方式一 from abc import ABCMeta from abc import abstractmethod class BaseMessage(metaclass=ABCMeta): @abstractmethod def send(self,subject,body,to,name): pass 方式二 class BaseMessage(object): def send(self, subject, body, to, name): raise NotImp