目录

HttpRequest·概述

HttpRequest·运用

环境准备

get请求

post 请求


HttpRequest·概述

1、项目中经常会使用 http 请求,LayaAir 引擎中 laya.net.HttpRequest 就是专门用于处理 http 网络请求,其实质包装的就是原生的 XMLHttpRequest

2、XMLHttpRequest 这个原生的类其实很庞大,功能很强大,laya 对其的封装只是满足基本的需求,一些特殊的需求比如文件上传等,需要自己进行扩展

  • 详细的XMLHttpRequest,请看 W3C的xhr 标准;
  • XMLHttpRequest发各种类型的数据,可以参考发送数据和html5rocks上的这篇文章
  • 了解XMLHttpRequest的基本使用,可以参考MDN的XMLHttpRequest介绍;
  • 想了解跨域请求,则可以参考W3C的 cors 标准;

3、更多关于原生 XMLHttpRequest 可以参考 Laya官网介绍:https://ldc.layabox.com/doc/?nav=zh-js-1-6-0,本文只对如何编码使用进行说明。

Package laya.net
public class HttpRequest
Inheritance HttpRequest EventDispatcher Object

4、HttpRequest 通过封装 HTML XMLHttpRequest 对象提供了对 HTTP 协议的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力

5、HttpRequest 只提供以异步的形式返回 Web 服务器的响应,并且能够以文本或者二进制的形式返回内容

6、建议每次请求都使用新的 HttpRequest 对象,因为每次调用该对象的send方法时,都会清空之前设置的数据,并重置 HTTP 请求的状态,这会导致之前还未返回响应的请求被重置,从而得不到之前请求的响应结果

Property
data : *    [read-only] 返回的数据。
http : *   [read-only] 本对象所封装的原生 XMLHttpRequest 引用。
url : String   [read-only] 请求的地址。
Method

send(url:String, data:* = null, method:String = get, responseType:String = text, headers:Array = null):void  发送 HTTP 请求

url:String — 请求的地址。大多数浏览器实施了一个同源安全策略,并且要求这个 URL 与包含脚本的文本具有相同的主机名和端口。
data:* (default = null) — (default = null)发送的数据,当 method为post,使用 data设置传递的数据
method:String (default = get) — (default = "get")用于请求的 HTTP 方法。值包括 "get"、"post"、"head"。
responseType:String (default = text) — (default = "text")Web 服务器的响应类型,可设置为 "text"、"json"、"xml"、"arraybuffer"。
headers:Array (default = null) — (default = null) HTTP 请求的头部信息。参数形如key-value数组:key是头部的名称,不应该包括空白、冒号或换行;value是头部的值,不应该包括换行。比如["Content-Type", "application/json"]。
Event Summary

complete

请求结束后调度。Event.type property = Event.COMPLETE

error

请求出错时调度。Event.type property = Event.ERROR

progress

请求进度改变时调度。Event.type property = Event.PROGRESS

HttpRequest·运用

环境准备

下面是一个 Java 服务器后台控制层代码,用于提供客户端的 get 与 post 请求。

/*** 请求地址:http://localhost:8080/coco/getTest*/@RequestMapping(value = "getTest")public void getTest(String id, String name, String address, HttpServletResponse response) {try {System.out.println(new Date() + " Get 访问 .id=" + id + "\tname=" + name + "\taddress=" + address);PrintWriter printWriter = response.getWriter();printWriter.write("{\"message\":\"Get Success\"}");printWriter.flush();printWriter.close();} catch (IOException e) {e.printStackTrace();}}/*** post 请求地址:http://localhost:8080/coco/postTest*/@RequestMapping(value = "postTest", method = RequestMethod.POST)public void postTest(String id, String name, String info, HttpServletResponse response) {try {System.out.println(new Date() + " Post 访问 .id=" + id + "\tname=" + name + "\taddress=" + info);PrintWriter printWriter = response.getWriter();printWriter.write("{\"message\":\"Post Success\"}");printWriter.flush();printWriter.close();} catch (IOException e) {e.printStackTrace();}}

get请求

    //初始化引擎Laya.init(1136,640);var xhr = new Laya.HttpRequest();//创建HttpRequest对象xhr.http.timeout = 10000;//设置超时时间;//once:使用 EventDispatcher 对象注册指定类型的事件侦听器对象,以使侦听器能够接收事件通知,此侦听事件响应一次后自动移除//on:使用 EventDispatcher 对象注册指定类型的事件侦听器对象,以使侦听器能够接收事件通知。两者参数是完全一样的//注意默认情况下必须是Laya.Event.COMPLETE的形式,而不能是Event.COMPLETE,否则会触发不了回电函数xhr.on(Laya.Event.PROGRESS,this,processHandler);xhr.once(Laya.Event.ERROR,this,errorHandler);xhr.once(Laya.Event.COMPLETE,this,completeHandler);//发送http请求——get请求时参数必须带在路径中,此时第二个参数空着即可//如果是 post请求,则参数必须放在第二个参数中,格式同样是:a=xxxx&b=xxx//xhr.send("data/city.json")表示请求 bin目录下的 data/city.json 文件xhr.send("http://localhost:8080/coco/getTest?id=110&name=张三&address=南海大道","","get","text");//请求进度改变时调度,通常用于文件上传等function processHandler(data){console.log("请求进行中:"+data);}//请求出错时调度function errorHandler(data){console.log("请求错误:"+data);}//请求结束后调度 ———— 其中的参数就是服务器放的数据function completeHandler(data){console.log("请求成功...");console.log("返回数据1:"+data);console.log("返回数据2:"+xhr.data);//也可以使用HttpRequest的属性data获取服务器返回的数据console.log("请求地址:"+xhr.url);//HttpRequest的属性url返回请求的路径}

post 请求

     //初始化引擎Laya.init(1136,640);var xhr = new Laya.HttpRequest();//创建HttpRequest对象xhr.http.timeout = 10000;//设置超时时间;//once:使用 EventDispatcher 对象注册指定类型的事件侦听器对象,以使侦听器能够接收事件通知,此侦听事件响应一次后自动移除//on:使用 EventDispatcher 对象注册指定类型的事件侦听器对象,以使侦听器能够接收事件通知。两者参数是完全一样的//注意默认情况下必须是Laya.Event.COMPLETE的形式,而不能是Event.COMPLETE,否则会触发不了回电函数xhr.on(Laya.Event.PROGRESS,this,processHandler);xhr.once(Laya.Event.ERROR,this,errorHandler);xhr.once(Laya.Event.COMPLETE,this,completeHandler);//发送http请求——get请求时参数必须带在路径中,此时第二个参数空着即可//如果是 post请求,则参数必须放在第二个参数中,格式同样是:a=xxxx&b=xxx,通常项目中都会采用json格式进行数据传递xhr.send("http://localhost:8080/coco/postTest","id=120&name=李四&address=后海大道","post","json");//请求进度改变时调度,通常用于文件上传等function processHandler(data){console.log("请求进行中:"+data);}//请求出错时调度function errorHandler(data){console.log("请求错误:"+data);}//请求结束后调度 ———— 其中的参数就是服务器放的数据function completeHandler(data){console.log("请求成功...");//json对象取值,两种方式 Obj.property、Obj[property]console.log("返回数据1:"+data,JSON.stringify(data),data["message"]);console.log("返回数据2:"+xhr.data.message);//也可以使用HttpRequest的属性data获取服务器返回的数据console.log("请求地址:"+xhr.url);//HttpRequest的属性url返回请求的路径}

LayaAir HttpRequest 网络访问相关推荐

  1. android端的的网络访问

    一.Android端进行网络访问的几种实现方式 Socket 套接字,为TCP/IP协议网络通信的网络操作单元: 而抽象上来说:Socket只是一个供上层调用的抽象接口,相当于是传输层下的数据,还没经 ...

  2. 【Linux】 Linux简单操作之网络通信和网络访问

    一.网络通信 1.ifconfig : 查看ip信息 2.ping :  测试网络连通 格式 : ping ip或域名 注: 通过该测试你能知道你的计算机是不是能联网的. 二.网络访问 1.curl ...

  3. “移花接木”偷换广告:HTTPS劫匪木马每天打劫200万次网络访问

    本文讲的是"移花接木"偷换广告:HTTPS劫匪木马每天打劫200万次网络访问,近年来,国内各大网站逐渐升级为HTTPS加密连接,以防止网站内容被篡改.用户数据被监听.但是一向被认为 ...

  4. 网络访问:本地账号的共享和安全模式设置身份验证后自动更改其他验证的处理方法 ...

    网络访问:本地账号的共享和安全模式 设置成为"仅来宾-本地用户以来宾身份验证"后自动更改成"经典:本地用户以自己的身份验证"的处理方法 我们为何要修改网络访问: ...

  5. mongoengine中queryset触发网络访问机制剖析

    背景 最近新上线的一个服务,偶尔会有超时告警,其主要逻辑仅仅只是简单的读/写mongodb,而且服务上线初期,流量并不大,因而理论上来说,每次请求都应该很快才对,事实上分析日志也证实90%以上的请求都 ...

  6. 已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。...

    [记得server 跟 client 机器都要这样配置] 已禁用对分布式事务管理器(MSDTC)的网络访问.请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问. 已禁用对分 ...

  7. 深入Atlas系列:客户端网络访问基础结构示例(1) - 编写并使用自定义的WebRequestExecutor...

    WebRequestExecutor是ASP.NET AJAX网络访问基础结构的唯一修改点.理论上,我们可以使用自定义的WebRequestExecutor来取代默认的XMLHttpExecutor. ...

  8. ISA CMAK 网络访问隔离区

    网络访问隔离区控制的工作原理: A.远程访问端将其身份难凭据传递给予远程访问服务器 B.路由和访问服务器计算机难远程访问客户端的身份难凭据,假该凭据有效,则检查它的远程访问策略. C.接受该连接,但有 ...

  9. 计算机 网络访问保护,开启win2008网络访问保护的具体步骤

    在局域网中,如果有一台计算机中了病毒,那么局域网中的其他计算机就很可能受到牵连,在windows2008系统下,我们可以开启网络访问保护功能,禁止不安全的计算机自由介入局域网内,这样一来就可以保护局域 ...

  10. oracle ora-24247 ACL,ORACLE 11G 存储过程发送邮件(job),ORA-24247:网络访问被访问控制列表 (ACL) 拒绝...

    ORA-24247:网络访问被访问控制列表 (ACL) 拒绝 需要先使用 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL 创建访问控制列表(ACL), 再使用 DBMS_NETWO ...

最新文章

  1. Spring Cloud Alibaba - 19 Nacos Config配置中心加载不同微服务的通用配置的两种方式
  2. pandas:dataframe删除某些不为non的行
  3. Acwing第 19 场周赛【完结】
  4. linux 命令行 ctrl z,Linux操作系统下运行命令时CTRL+Z的作用
  5. glibc交叉编译_TSN之linuxptp交叉编译
  6. java请求响应中转_J2EE中的请求中转、重定向和包含关系
  7. [BZOJ4873][六省联考2017]寿司餐厅(最大权闭合子图)
  8. 【JavaScript】支持js代码的博客有…
  9. 中国石油大学-《现代应用文写作》第三阶段在线作业
  10. 07-PKI证书体系
  11. Android 集成友盟统计
  12. angular 易犯错误
  13. 高分子材料老化的内外因、性能评价与预防措施
  14. MySQL Workbench构建ER图(实体关系图)
  15. React ref useRef 完全指南
  16. 是IT培训班好,还是大学计算机专业好?
  17. AE 安装出错代码: 176
  18. 反向传播算法公式推导
  19. 实验5:第一个Android应用小程序
  20. php自动轮播图代码,教你纯代码实现wordpress主题幻灯片轮播图片功能小工具

热门文章

  1. 建立类成员函数与字符串的对应关系
  2. 拓端tecdat|【视频】R语言生存分析原理与晚期肺癌患者分析案例|数据分享
  3. 拓端tecdat|用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类
  4. 手机怎么用java9_java9_java9官方版 32位64位 最新版_天天下载手机版
  5. R-CNN学习笔记5:Faster R-CNN
  6. draw_net.py绘制caffe net结构
  7. C++构造函数详解(复制构造函数)
  8. torch.rand() 和 torch.randn() 有什么区别?
  9. 2021-07-01样式和图片标签
  10. idea zip怎么安装_Mybatis源码分析(一): 下载Mybatis源码安装并导入IDEA