zoukankan      html  css  js  c++  java
  • 5月29 服务接口

    接口:

    接口分为两类

    面向对象的接口和常说的调用接口

    面向对象的接口时一个抽象类(抽象类:比较抽象不能直接new 需要子类来实现具体的操作,需要被继承)而接口比抽象类还要抽象,所用的关键字比较特殊interface

    socket:TCP,长连接------

      socket则是对TCP/IP协议的封装和应用(程序员层面上)。

      也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,

      而HTTP是应用层协议,主要解决如何包装数据。

    TCP:长连接,client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。

    HTTP:无状态。每次请求都会断开。建立新的断开,建立断开-----HTTP协议是无状态协议

    无状态是指协议对于 事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

    <?php
    //接口中必须要对父类进行重写
    interface  USB//不能直接new 通过子类
    {
        function Read()
        {
        }
        function Write()
        {
        }
    }
    class Upan extends USB
    {
        function Read()
        {
            echo "读取USB";
        }
        function Write()
        {
            echo "写入USB数据";
        }    
    }
    
    
    ?>

    例题:

    利用API接口查询天气预报,API:调用接口时给其数据并返回我们需要的数据

    国家气象局天气预报接口API,可根据地区名称、经纬度、IP查询对应地区的天气预报。 接口返回7天的数据,包括白天晚上的温度、湿度、风速、风向、风力,一氧化碳、二氧化氮等PM 2.6空气质量指数,穿衣、出行、洗车等生活指数。7天天气范围的预报每天更新3次,分别是9点,12点,18点。实时天气情况每30分钟更新1次。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>利用API接口查询天气</title>
    </head>
    
    <body>
    <?php
    //md5签名方式--非简单签名
    
    header("Content-Type:text/html;charset=UTF-8");
    date_default_timezone_set("PRC");
    $showapi_appid = '19667';  //替换此值,在官网的"我的应用"中找到相关值
    $showapi_secret = '5693007ca66f483cb14782b137745212';  //替换此值,在官网的"我的应用"中找到相关值 
     
     
    $paramArr = array(
         'showapi_appid'=>$showapi_appid,
         'area'=>'青岛'
    );
     
    //创建参数(包括签名的处理)
    function createParam ($paramArr,$showapi_secret) {
         $paraStr = "";
         $signStr = "";
         ksort($paramArr);
         foreach ($paramArr as $key => $val) {
             if ($key != '' && $val != '') {
                 $signStr .= $key.$val;
                 $paraStr .= $key.'='.urlencode($val).'&';
             }
         }
         $signStr .= $showapi_secret;//排序好的参数加上secret,进行md5
         $sign = strtolower(md5($signStr));
         $paraStr .= 'showapi_sign='.$sign;//将md5后的值作为参数,便于服务器的效验
         //echo "排序好的参数:".$paraStr."<br>";
         return $paraStr;
    }
     
    $param = createParam($paramArr,$showapi_secret);
    $url = 'http://route.showapi.com/9-2?'.$param; 
    //echo "请求的url:".$url."<br>";
    $result = file_get_contents($url);
    echo "返回的json数据:";
    
    $result = json_decode($result);
    
    //var_dump($result);  //返回object
    
    
    //将object转换为数组
    $attr = object_array($result);
    
    function object_array($array)
    {
        if(is_object($array))
        {
            $array = (array)$array;
        }
        if(is_array($array))
        {
            foreach($array as $key=>$value) 
            {
                $array[$key] = object_array($value);
            }
        }
        return $array;
    }
    echo "今天的最高温度是:{$attr['showapi_res_body']['f1']['day_air_temperature']}";//查询最高温度
    
    var_dump($attr);
    ?>
    </body>
    </html>
    View Code

    补充:

    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内[1] 另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

    当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的

    HTTP超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

    客户端与服务器进行动态交互的Web应用程序出现之后,HTTP无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保持HTTP连接状态的技术就应运而生了,一个是 Cookie,而另一个则是 Session。HTTP本身是一个无状态的 连接协议,为了支持 客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是CookieSession了。

  • 相关阅读:
    T-SQL部分函数(转)
    sql server中触发器
    sql server中查询结果集顺序问题
    sql server中的TimeStamp时间戳与UniqueIdentifier数据类型
    SQL
    SQL表的最基本操作练习
    增删改查 T-SQL最基本操作
    SQL表的默认常用数据类型
    算法训练 P1102
    算法训练 最短路
  • 原文地址:https://www.cnblogs.com/Duriyya/p/5541470.html
Copyright © 2011-2022 走看看