Http组件的介绍
do_Http组件就是实现http/https协议的组件.
首先要说明一下,Do平台只是一个移动端开发的平台,不涉及任何后台服务端的技术,你可以使用你自己任何熟悉的语言和技术来实现服务端,do_Http组件就是用来和服务端通信。
http是一个最基础的应用层的通信协议,开发者应该很熟悉,但是在QQ群和很多同学讨论,发现有不少人没有很好的理解http。我这里再简单描述一下,熟悉的人就跳过吧。
协议的介绍
所谓协议就是指http的客户端和服务端的一个协商的一个标准,一个规范,是一个可以用文字来描述能用纸来记录下来的文档。
比如说假设一个规范规定
客户端发送“hi”给服务端,服务端必须回答“hi client"客户端发送“hello”给服务端,服务端必须回答“hello hello”......
那么不管你客户端是用Java还是什么语言,服务端是用C#还是别的语言,都必须按照这个规范,都必须客户端发hi,服务端返回hi client。
当然http协议要复杂很多,详细的可以参考http协议的介绍。常用的语言比如Java,C#,ios等等都有这个协议的实现,do_Http也一样。这些语言实现的方式各有不同,有不同名字的属性,事件,方法,但是本质上都是实现这套规范。
HTTP通信的过程
- 客户端利用一些属性事件方法,拼接出一个请求报文。这个报文是有一定格式的,而且这个格式必须正确。报文通常分报文header和报文body。它的大概格式类似如下例子:
POST /sn/index HTTP/1.1
Accept: */*
Accept-Language: zh-cn
host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: 12
Connection:close
sn=123&n=asa
do_Http组件提供了一些属性和方法来拼接这个请求报文:
body :post的数据contentType:post的数据格式method:数据请求的方法,基本的是GET,POST,也支持DELETE,PUT等标准timeout:毫秒为单位的超时设置url:请求的地址setRequestHeader():设置header里的属性和属性值,可以执行多次,每次增加一条
- 客户端把报文发送到服务端,do_Http组件提供了4个方法来处理,本质上这4个方法都是一样,只不过为了方便,分成了4个应用不同的场景。
request():最基本的请求方法,通常只能发送文本download():可以直接发送一个请求把服务端的文件下载下来保存到手机端,可以监控下载的进度。upload():可以把本地的文件上传到服务端,可以监控上传的进度。form():有点类似request和upload的混合,它可以同时发送多个文本也能发送多个文件。类似 web的表单提交。
服务端接受到客户端发送过来的请求报文,然后解析成数据。这一块和do平台无关,可以用你自己熟悉的后台开发语言来实现。
服务端对请求作出相应处理之后,返回一个 响应报文给前端,这个报文也是有格式的,报文通常分报文header和报文body。类似下面的格式:
HTTP/1.1 200 OK
Date: Sat, 31 Dec 2005 23:59:59 GMT
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 122
<html>
<head>
<title>Wrox Homepage</title>
</head>
<body>
<!-- body goes here -->
</body>
</html>
这个步骤也和do平台无关。
- 客户端接收服务端返回的响应报文做相应的处理。
do_Http提供4个接口来处理返回的数据
fail:请求出错事件progress:发送和接受数据时可以用这个监控进度result:发送后接受完数据会触发这个事件success:只有接受到状态码200才会触发这个事件,这个事件不够完善,还是用result事件更合适
完整的测试示例
Http组件的介绍的更多相关文章
- android开发3:四大基本组件的介绍与生命周期
android开发3:四大基本组件的介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver ...
- Vue 组件&组件之间的通信 之组件的介绍
什么是组件? 组件Component,可扩展HTML元素,封装可重用的代码.通俗的来说,组件将可重用的HTML元素封装成为标签方便复用: 组件的使用: 1.使用全局的方法Vue.extend创建构造器 ...
- openstack及组件简要介绍
为什要用云? 一.简单的说就是对资源更加合理的分配,使用,比如硬件的数量,带宽等等这些,因为你不能机器买来不需要了再卖掉(当然也可以),带宽跟机房签合同得来一年的,中间不够了也不能加,超了也不退钱 二 ...
- 读写Word的组件DocX介绍与入门
本文为转载内容: 文章原地址:http://www.cnblogs.com/asxinyu/archive/2013/02/22/2921861.html 开源Word读写组件DocX介绍与入门 阅读 ...
- 第1节 kafka消息队列:2、kafka的架构介绍以及基本组件模型介绍
3.kafka的架构模型 1.producer:消息的生产者,主要是用于生产消息的.主要是接入一些外部的数据源,从外部获取数据,比如说我们可以从flume获取数据,还可以通过ftp传入数据等,还可以通 ...
- 150多个Flutter组件详细介绍送给你
迷茫是什么,迷茫就是大事干不了,小事不想干,能力配不上欲望,才华配不上梦想. 150+Flutter组件详细介绍地址:http://laomengit.com/ 前言 我在Flutter未正式发布之前 ...
- .NET平台开源项目速览(9)软件序列号生成组件SoftwareProtector介绍与使用
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下Software Protector序列号生成组件.今天就通过一篇简单的文章来预览一下其强大的功 ...
- Android开发自学笔记(Android Studio)—4.界面编程与View组件简单介绍
一.引言 Android应用开发最重要的一份内容就是界面的开发,无论你程序包含的内容多么优秀,如若没有一个良好的用户交互界面,最终也只是会被用户所遗弃.Android SDK提供了大量功能丰富的UI组 ...
- Android新组件RecyclerView介绍,其效率更好
今天我们首先来说为什么要介绍这个新组件RecyclerView,因为前几天我发布了一个常用面试题ListView的复用及如何优化的文章,介绍给一些开发者,但是我看到有关的反馈说:现在都不再用listv ...
随机推荐
- ThinkCmfX模板常量
一.public文件: 1.各种js文件,包括cookie.js.ajaxFrom.js等系统自带的js文件 2.simpleboot:bootstrap.图标font文件 二.themes:前端模板 ...
- SQL语句 - MERGE INTO 、Cross/Outer Apply用法理解
MERGE INTO 语法: MERGE INTO table_name alias1 USING (table|view|sub_query) alias2ON (join condition) W ...
- 非常适用的Sourceinsight插件,提高效率事半功倍
一直使用sourceinsight编辑C/C++代码,sourceinsight是一个非常好用的编辑工具可以任意定位,跳转,回退,本人一直 使用该工具做C/C++开发,sourceinsight能够满 ...
- Android Studio踩坑记
1. 模拟器在管理器中可以运行,但是点击run时死活找不到: 在sdk的/platform-tools/目录下找到adb.exe工具 打开cmd,输入下面两条命令 adb kill- ...
- Windows zabbix监控远程进程实现机制
最近负责zabbix监控部署方面的工作,需要完成本地服务端监控远程虚拟机的运行状态(CPU.打开的进程等),与大家分享下我的实现方法. (1) 首先,需要实现记录zabbix客户端的进程的批处理:za ...
- java解析XML(转载)
使用Dom4j解析XML dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的 ...
- TypeScript & JavaScript
http://www.typescriptlang.org/docs/tutorial.html handbook: Basic Types Variable Declarations Interfa ...
- Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理
摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■ 详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...
- chattr的常用参数详解
chattr的常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在实际生产环境中,有的运维工程师不得不和开发和测试打交道,在我们公司最常见的就是部署接口.每天每个人部署的 ...
- .NET中表单的JS验证
JS验证代码如下:(需要引入两个JS包) <script type="text/javascript" src="/js/jquery.validate.min.j ...
