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了。

 

posted @ 2016-05-30 13:00  Durriya  阅读(159)  评论(0编辑  收藏  举报