(转http://blog.csdn.net/sinat_28338727/article/details/52804167

网络结构

网络结构是网络的构建方式,目前流行的有客户端服务器结构网络和点对点结构网络。

客户端服务器结构网络

客户端服务器结构网络是一种主从结构网络。服务器一般处于等待状态,如果有客户端请求,服务器响应请求,建立连接,提供服务。服务器是被动的,客户端是主动的。

点对点结构网络

点对点结构网络也叫对等结构网络,每个节点之间是对等的。
考虑到跨平台的需要,Cocos2d-JS引擎主要采用C/S结构网络。
客户端服务器应用层最主要采用的是HTTP和HTTPS等传输协议。因此有必要介绍一下HTTP和HTTPS:

HTTP

HTTP是超文本传输协议,Internet的基本协议是TCP/IP,目前广泛采用的是HTTP、HTTPS、FTP、Archie Gopher等是建立在TCP/IP之上的应用层协议,不同的协议对应着不同的应用。
HTTP是一个属于应用层的面向对象的协议。由于其简洁,快速的方式。适用于分布式超文本信息传输。
HTTP协议共定义了8种请求方法,OPTIONS,HEAD,GET,POST,PUT,DELETE,TRACE和CONNECT.作为Web服务器,至少需实现GET和HEAD方法,其他方法都是可选的。
GET方法是向指定的资源发出去请求,发送的信息显示在URL后面。GET方法应该只用在读取数据,如静态图片等数据。
POST方法是向指定资源提交数据,请求服务器进行处理。
GET方法像是使用明信片给别人写信,“信内容”写在外面,接触到的人都可以看到,不安全。
POST方法像是把“信内容”装入到信封中给别人写信,接触到的人都看不到,因此是安全的。

HTTPS

HTTPS即安全产文本传输协议,是超文本传输协议和SSL的组合。提供加密通信及对网络服务器身份的鉴定。
简单地说。HTTPS是HTTP的升级版。与HTTPS的区别是,HTTPS使用https://代替http://,HTTPS使用端口443,而HTTP使用端口80和TCP/IP进行通信。SSL使用40位关键字作为RC4流加密算法。这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证。如果需要,用户可以确认发送者是谁。

使用XMLHttpRequest对象开发客户端

在Web前端开发中有一种异步刷新技术-AJAX。
AJAX的核心是JavaScript对象XMLHTTPRequest,该对象在Internet Explore5中首次引入,它是一种支持异步请求的技术。借助于XMLHttpRequest对象可以使用JavaScript语言向服务器提出请求并处理响应。

使用XMLHttpRequest对象

由于在Web中使用XMLHttpRequest对象发出HTTP请求和普遍,Cocos2d-JS引擎对其平台进行了移植。可以在cocos2d-JS JSB本地平台和Cocos2d-html的web平台中使用了XMLHttpRequest对象。
XMLHttpRequest对象中常用的函数和属性如下:
1、open() 与服务器连接,创建新的连接请求。
2、send() 向服务器发送请求。
3、abort()退出当前请求
4、readyState属性,提供当前请求的状态,其中4表示准备就绪。
5、status属性,提供当前的HTTP请求状态码,其中200表示请求成功。
6、responseText属性,服务器返回的请求响应文本。
7、onreadystatechange属性,设置回调函数。
其中,open和send函数,以及onreadystatechange属性是http请求的关键。

open函数有5个参数可以使用。(method,url,async,user,password)

method,是指发送请求的类型,一般为GET或POST
url,要请求的链接url
async,是否为异步请求,该参数可选,默认是true
user,如果该请求需要身份验证,这里指定用户名,无默认值
password,,如果该请求需要身份验证,这里指定密码,无默认值

XML HttpRequest中有5种就绪状态:

1、0:请求没有发出,在调用open()函数之前为该状态
2、1:请求已经建立但还没有发出,在调用send()函数之前为该状态
3、2:请求已经发出正在处理中
4、3:请求已经处理,响应中通常有部分数据可用,但是服务器还没有完成响应
5、4:响应已经完成,可以访问服务器响应并使用它

常见的HTTP状态码如下:

401:表示所访问数据禁止访问
403:表示所访问数据收到保护
404:表示错误的URL请求,表示请求的服务器资源不存在
200:表示一切顺利
如果就绪状态是4而且状态码是200即可处理服务器的数据

这里是GET方式请求

var httpHelper = {};
httpHelper.get = function(url, callback){
var request = cc.loader.getXMLHttpRequest();
console.log("Status: Send Get Request to " + url);
request.open("GET", url, true); request.onreadystatechange = function () {
if (request.readyState == 4 && (request.status >= 200 && request.status <= 207)) {
var httpStatus = request.statusText;
var response = request.responseText;
console.log("Status: Got GET response! " + httpStatus);
callback(true, request);
}else{
callback(false, request);
}
};
request.send();
};

使用如下

var reqUrl = "";
httpHelper.get(reqUrl, function (isSuccess, data) {});

这里是POST方式:

httpHelper.post = function(url,params,callback){
var nums = arguments.length
if(nums == 2){
callback = arguments[1];
params = "";
}
var xhr = cc.loader.getXMLHttpRequest();
xhr.open("POST", url);
xhr.setRequestHeader("Content-Type","text/plain;charset=UTF-8");
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status <= 207)) {
err = false;
}else{
err = true;
}
var response = xhr.responseText;
callback(err,response);
};
xhr.send(params);
}

使用如下:

httpHelper.post("http://127.0.0.1:3000/test","id=1&ids=2", function(err,data){
if(err){
//错误处理
}else{
cc.log(data);
}
})

cocos-js Http方式网络请求的更多相关文章

  1. vue(24)网络请求模块axios使用

    什么是axios Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中. 主要的作用:axios主要是用于向后台发起请求的,还有在请求中做更多是可控功能. a ...

  2. 【cocos2d-js网络教程篇】cocos2d-js http网络请求

    前言 刚入手cocos2d-js,看到网上的JS的http网络请求,大部分都是错的.原因在于,js-tests里面的网络请求实例没有给出加载完成事件.正确的加载完成事件如下: var xhr = cc ...

  3. 移动端打印输出内容以及网络请求-vconsole.js

    今天,无意间从别人那里得知一个很好的js插件--vconsole.min.js,可以实现在移动端打印输出内容以及查看网络请求.下面记录使用方式. 1.下载vconsole.min.js插件 以下复制了 ...

  4. 介绍一下主流的浏览器的开发者工具(js调试和查看网络请求)

    1.打开开发者工具:右键-->检查 (快捷键 f12) 2.开发者工具介绍: (1): 选择页面的dom进行查看 (2):设备适配 (3)元素: ① 可以查找到界面对应的dom: ② 通过计算样 ...

  5. 在 JS 中使用 fetch 更加高效地进行网络请求

    在前端快速发展地过程中,为了契合更好的设计模式,产生了 fetch 框架,此文将简要介绍下 fetch 的基本使用. 我的源博客地址:http://blog.parryqiu.com/2016/03/ ...

  6. IOS 网络请求方式

    iOS开发中的网络请求   今天来说说关于iOS开发过程中的网络请求. 关于网络请求的重要性我想不用多说了吧.对于移动客户端来说,网络的重要性不言而喻.常见的网络请求有同步GET, 同步POST, 异 ...

  7. WebClient和HttpReuqest两种网络请求的方式

    相对来说webClient请求的方式比较简单,可以直接通过new的方式创建一个实例,然后调用OpenReadAsync方法传进一个url,最后通过回调函数OpenReadCompleted就可以获取网 ...

  8. 百度语音识别REST API——通过使用Http网络请求方式获得语音识别功能

    百度语音识别通过REST API的方式给开发人员提供一个通用的HTTP接口,基于该接口,开发人员能够轻松的获取语音识别能力,本文档描写叙述了使用语音识别服务REST API的方法. 长处: 较之开发人 ...

  9. iOS 网络与多线程--5.异步Post方式的网络请求(非阻塞)

    通过Post请求方式,异步获取网络数据,异步请求不会阻塞主线程,而会建立一个新的线程来操作. 代码如下 ViewController.h文件 #import <UIKit/UIKit.h> ...

随机推荐

  1. HDU1698 线段树(区间更新区间查询)

    Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...

  2. 【c#】winform 上传图片

    1.拖拽上传图片 1.1.后台代码中修改窗体属性,添加 AllowDrop = true 1.2.给窗体添加拖拽事件,在事件列表找到拖拽 双击即可: 在 DragDrop 生成的方法中添加代码如下: ...

  3. 应用Xml.Linq读xml文件

    c#提供了System.Xml.Linq操作xml文件,非常方便,本文主要介绍如何应用System.Xml.Linq读取xml文件. xml文本 <?xml version="1.0& ...

  4. LightOJ 1278 - Sum of Consecutive Integers 分解奇因子 + 思维

    http://www.lightoj.com/volume_showproblem.php?problem=1278 题意:问一个数n能表示成几种连续整数相加的形式 如6=1+2+3,1种. 思路:先 ...

  5. bzoj 4034: [HAOI2015]树上操作——树链剖分

    Description 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a . 操作 2 :把某个节点 x 为根的子树中 ...

  6. 【Atcoder】ARC084 Small Multiple

    [题意]求一个k的倍数使其数位和最小,输出数位和,k<=10^5. [算法]最短路 [题解]考虑极端情况数字是可能爆long long的(例如k*num=100...000),所以确定基本方向是 ...

  7. 洛谷 P3375 【模板】KMP字符串匹配

    我这段时间因为字符串太差而被关了起来了(昨晚打cf不会处理字符串现场找大佬模板瞎搞,差点就凉了),所以决定好好补一下字符串的知识QAQ,暂时先学习kmp算法吧~ 题目链接:https://www.lu ...

  8. 27、简述redis的有哪几种持久化策略及比较?

    Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF 持久化记录服务器执行的所有写操作命令 ...

  9. div 超出高度滚动条,超出宽度点点点

    超出高度滚动条 style="width:230px; height: 180px; overflow: auto;" 超出宽度点点点 style="width: 220 ...

  10. ie8下input文字偏上select文字偏下

    1.ie8下input文字偏上 正常情况下input的显示情况如下 当设置input的高度时,就会出现文字不垂直居中偏上的情况,如图 解决方案 强input的行高line-height与其高度设置一致 ...