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>

补充:

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

时间: 2024-11-06 09:37:46

5月29 服务接口的相关文章

第9期《python3接口自动化测试》课程,6月29号开学!

2019年 第13期<python3接口自动化测试>课程,6月29号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学 本期上课时间:6月29号-7月28号,每周六.周日晚上20:30-22:30 报名费:报名费1000一人(周期1个月) 联系QQ:283340479 个人成就: 1.个人博客,百度直接搜索:上海-悠悠博客 2.个人原创微信公众号:yoyoketang 3.已经在百度阅读上线的python四大名著,百度搜索:百度阅读,再搜索书名: <selenium webdri

20.5 语音合成(百度2016年2月29日发布的tts引擎)

分类:C#.Android.VS2015: 创建日期:2016-03-17 一.简介 编写手机App时,有时需要使用文字转语音(Text to Speech)的功能,比如开车时阅读收到的短信.导航语音提示.界面中比较重要的信息通过语音强调.--等. 由于Android自带的Pico TTS并不支持中文,所以要既能阅读中文文本,还能阅读英文文本,必须下载第三方提供的能说中文的语音包. 二.申请百度tts授权 本节以百度2016年2月29日发布的"离在线融合语音合成SDK_Android 2.2.3

服务接口API限流 Rate Limit

一.场景描述 很多做服务接口的人或多或少的遇到这样的场景,由于业务应用系统的负载能力有限,为了防止非预期的请求对系统压力过大而拖垮业务应用系统,便在对服务接口做了许多策略:服务接口降级.限流.引流等.本文讨论下限流策略,虽然降低了服务接口的访问频率和并发量,却换取服务接口和业务应用系统的可用性. 二.常用的限流算法 常用的限流算法由:楼桶算法和令牌桶算法.本文不具体的详细说明两种算法的原理,原理会在接下来的文章中做说明. 1.漏桶算法 漏桶(Leaky Bucket)算法思路很简单,水(请求)先

.Net 与 Java 的服务接口相互调用

本文介绍.Net 与 Java 相互调用的例子.下面的介绍主要包括三方面:一是通过常用Web服务进行相互调用,二是使用TCP/IP套接字进行相互调用,三是使用Remote实现远程对象相互调用. 首先说一下Web服务的来源,Web服务是一种新的Web应用程序分支,可以执行从简单的请求到复杂商务处理等任何功能.一旦部署以后,其他Web服务应用程序可以发现并调用它部署的服务. Web Service是一种应用程序,它可以使用标准的互联网协议,像超文件传输协议(HTTP).简单对象访问协议(SOAP).

轻松畅快玩转Windows/Linux语音服务接口

仲夏五月,讯飞在线课堂正式开课啦!首推Android SDK精品课程: 季夏六月,研发大神解读Java SDK,玩转开发根本不叫事: 初秋七月,音频处理专题深入剖析了音频处理的那些事: 仲秋八月,又将为您带来什么课程呢?您又期待什么呢? -- 针对PC端开发,科大讯飞技术支持之神大鹏哥将以Windows和LinuxSDK为切入点进行语音云服务的分享.主要精彩内容包括:语音云服务能力介绍.SDK C接口的使用.语音云使用过程中常见集成问题的解决方法和思路. 届时还有美女主播为您引导,在听课和答疑阶

4月29日监理师课程作业

软考信息系统监理师:2016年4月29日作业 一.信息应用系统分析设计阶段监理 1.需求分析的进入条件是什么?(记) 答:①业主单位与承建单位正式签订建设合同, ②并对初步的项目开发计划达成一致意见. 2.需求分析的目标是什么? 答:需求分析的目标是深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求. 3.需求分析阶段的成果有哪些?(记) 答:①项目开发计划:②软件需求说明书:③软件质量保证计划:④软件配置管理计划: ⑤软件(初步)确认测试计划:

2018年3月29日 11:02:33 关于docker分享之分布式存储 glusterfs

2018年3月29日 11:02:33 关于docker分享之分布式存储 glusterfs 经典语录: 实际实验搭建:前提 是要保证 一个 /data目录不和根分区在同一个磁盘!1.centos7安装glusterfs参考链接:https://wiki.centos.org/SpecialInterestGroup/Storage/gluster-Quickstart#To Use the RPMs from Storage SIG, you need to install the cento

Oyk的ACM刷题记录(始于2015年2月29日,可能含剧透)

Online Judge 题目序号/题目 简单大意/题解 犯2情况 2月29日 SPOJ GSS1  不带更新区间最大子段和. 线段树维护 区间从左/右开始的最大值.区间最大值.区间和. 1.输出忘了换行. 2.打错了一个字母. SPOJ GSS2 区间不重复最大子段和. 离线维护s[i..now],线段树维护 区间历史最大值.区间历史最大更新值.区间现在最大值.区间现在更新值. 询问输出区间历史最大值. 1.线段树询问忘记写pushdown了. SPOJ TEST 输出所有42前的数. 1.不

编程之美-资格赛-2月29

简单模拟题 #include <iostream> #include <string> using namespace std; //判断是不是闰年 bool is(int year){ return year % 400 == 0?true: (year % 100 == 0?false:(year % 4 == 0?true:false)); } //判断结束日期是否不包括2月29 #define NO2 (in2Var1 < 3 && !(in2Var1