zoukankan      html  css  js  c++  java
  • php 调用接口

    1.一般常用方法 file_get_contents();

    今天调用了一个反人类的接口,接口是get方式传输,里面有一个参数是当前时间,没错,不是时间戳,是当前格式化的时间:2017-8-9 11:18:25    (= =)一万个XXX。

    然后用file_get_contents();去调用接口,结果调用失败,因为浏览器会自动将空格转义成%20  而函数却不会,所以调用不成功。(将接口链接直接输入在地址栏则成功调用,用函数则返回false)

    然后date('Y-m-d%20H:i:s'); 再去调用,依然不成功。于是 就采用curl来调用接口了。

    2.curl 调用接口(需要开启PHP curl支持)。

    POST方式(未测试)

    $url = 'http://yoururl';
    $post_data = array ("username" => "admin","key" => "12345");
    $ch = curl_init ();
    curl_setopt ( $ch, CURLOPT_URL, $url );
    curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 10 );
    curl_setopt ( $ch, CURLOPT_POST, 1 ); //启用POST提交
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //post的参数
    $file_contents = curl_exec ( $ch );
    curl_close ( $ch );


     php5.6以后 和5.6之前

    兼容性上传文件
     $curl = curl_init();
            
            if (class_exists('CURLFile')) {// 这里用特性检测判断php版本
                curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true);
                   $data = array('file' => new CURLFile(realpath($source)));//>=5.5
            } else {
                if (defined('CURLOPT_SAFE_UPLOAD')) {
                    curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false);
                }
                $data = array('file' => '@' . realpath($source));//<=5.5
            }
            
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_POST, 1 );
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($curl, CURLOPT_USERAGENT,"TEST");
            $result = curl_exec($curl);
            $error = curl_error($curl);

    GET方式(亲测可用)

    $url = 'http://yoururl';
    $ch = curl_init();//初始化
    curl_setopt($ch, CURLOPT_URL, $url);//设置选项
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $file_contents = curl_exec($ch);//执行并获取HTML文档内容
    curl_close($ch);//释放curl句柄
    print_r($file_contents);//打印获得的数据

    http://php.net/manual/zh/function.curl-setopt.php  (参数请参考官网)

    http://www.jb51.net/article/33383.htm  另一个网站

    参数:

    CURLOPT_URL            需要获取的url地址
    CURLOPT_RETURNTRANSFER 将curl_exec()获取的信息以字符串返回,而不是直接输出。// TRUE(1)一般为1
    CURLOPT_HEADER         启用时会将头文件的信息作为数据流输出。   //false(0)一般设为0
    CURLOPT_CONNECTTIMEOUT 在尝试连接时等待的秒数。设置为0,则无限等待。
    CURLOPT_POST            TRUE 时会发送 POST 请求,类型为:application/x-www-form-urlencoded,是 HTML 表单提交时最常见的一种。
    CURLOPT_POSTFIELDS     全部数据使用HTTP协议中的 "POST" 操作来发送。
        要发送文件,在文件名前面加上@前缀并使用完整路径。 文件类型可在文件名后以 ';type=mimetype' 的格式指定。
        这个参数可以是 urlencoded 后的字符串,类似'para1=val1&para2=val2&...',也可以使用一个以字段名为键值,字段数据为值的数组。
        如果value是一个数组,Content-Type头将会被设置成multipart/form-data。
        从 PHP 5.2.0 开始,使用 @ 前缀传递文件时,value 必须是个数组。
        从 PHP 5.5.0 开始, @ 前缀已被废弃,文件可通过 CURLFile 发送。
        设置 CURLOPT_SAFE_UPLOAD 为 TRUE 可禁用 @ 前缀发送文件,以增加安全性。

  • 相关阅读:
    CABasicAnimation 使用
    CABasicAnimation(CAKeyframeAnimation)keypath 取值
    c++的应用领域
    QT 状态机详解 statemachine (转)
    C++默认实参
    String隐式共享
    可重入函数与不可重入函数
    堆和栈的区别(转过无数次的文章)
    Qt Model/View(转)
    C++虚函数和纯虚函数
  • 原文地址:https://www.cnblogs.com/benpaodelulu/p/7324551.html
Copyright © 2011-2022 走看看