Unity3d 要放弃WWW,看看新的网络请求方式UnityWebRequest
2016-10-12 09:23
621 查看
孙广东 2016.10.11 http://blog.csdn.net/u010019717
Unity将要逐步放弃www网络请求api,新的api请求方式来临:
UnityWebRequestThe
旧的 www :
https://docs.unity3d.com/ScriptReference/WWW.html
新的 UnityWebRequestThe :
https://docs.unity3d.com/Manual/UnityWebRequest.html
https://docs.unity3d.com/ScriptReference/Networking.UnityWebRequest.html
using UnityEngine;
using UnityEngine.Experimental.Networking;
using System.Collections;
class MyBehaviour: public MonoBehaviour {
void Start() {
StartCoroutine(GetText());
}
IEnumerator GetText() {
using(UnityWebRequest www = UnityWebRequest.Get("http://www.my-server.com")) {
yield return www.Send();
if(www.isError) {
Debug.Log(www.error);
}
else {
// Show results as text
Debug.Log(www.downloadHandler.text);
// Or retrieve results as binary data
byte[] results = www.downloadHandler.data;
}
}
}
}
这是Unity5.4 中提供的 API, 为了代替WWW 以满足今天的 HTTP 通信的需求. 看官方文档,Unity5.2, 5.3 ,5.4 也是会有的!
UnityWebRequest 架构
UnityWebRequest 由三个元素组成。
◾UploadHandler 处理数据 将数据发送到服务器 的对象
◾DownloadHandler 从服务器接收数据 的对象
◾UnityWebRequest 负责 HTTP 通信流量控制来管理上面两个对象的对象。
来说明这些对象之间的关系,如下所示。
![](https://img-blog.csdn.net/20161008090917251?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
基本用法
比较UnityWebRequest 和 WWW 类的基本用法。
GET
www通过 url的写法:
using UnityEngine;
using System.Collections;
class MyBehaviour : public MonoBehaviour {
void Start() {
StartCoroutine(GetText());
}
IEnumerator GetText() {
WWW request = new WWW("http://example.com");
yield return request;
if (! string .IsNullOrEmpty(request.error)) {
Debug.Log(request.error)
} else {
//
if (request.responseHeaders.ContainsKey("STATUS") &&
request.responseHeaders["STATUS"] == 200) {
//
string text = request.text;
//
byte [] results = request.bytes;
}
}
}
}
换成 UnityWebRequest的 书写方式:// https://docs.unity3d.com/Manual/UnityWebRequest.html
using UnityEngine;
using System.Collections;
using UnityEngine.Experimental.Networking;
//
// using UnityEngine.Networking;
class MyBehaviour : public MonoBehaviour {
void Start() {
StartCoroutine(GetText());
}
IEnumerator GetText() {
UnityWebRequest request = UnityWebRequest.Get("http://example.com");
//
// UnityWebRequest request = new UnityWebRequest("http://example.com");
//
// request.method = UnityWebRequest.kHttpVerbGET;
//
yield return request.Send();
//
if (request.isError) {
Debug.Log(request.error);
} else {
if (request.responseCode == 200) {
//
string text = request.downloadHandler.text;
//
byte [] results = request.downloadHandler.data;
}
}
}
}
关于更多的内容 自己观看文档吧!
Unity将要逐步放弃www网络请求api,新的api请求方式来临:
UnityWebRequestThe
旧的 www :
https://docs.unity3d.com/ScriptReference/WWW.html
新的 UnityWebRequestThe :
https://docs.unity3d.com/Manual/UnityWebRequest.html
https://docs.unity3d.com/ScriptReference/Networking.UnityWebRequest.html
using UnityEngine;
using UnityEngine.Experimental.Networking;
using System.Collections;
class MyBehaviour: public MonoBehaviour {
void Start() {
StartCoroutine(GetText());
}
IEnumerator GetText() {
using(UnityWebRequest www = UnityWebRequest.Get("http://www.my-server.com")) {
yield return www.Send();
if(www.isError) {
Debug.Log(www.error);
}
else {
// Show results as text
Debug.Log(www.downloadHandler.text);
// Or retrieve results as binary data
byte[] results = www.downloadHandler.data;
}
}
}
}
这是Unity5.4 中提供的 API, 为了代替WWW 以满足今天的 HTTP 通信的需求. 看官方文档,Unity5.2, 5.3 ,5.4 也是会有的!
UnityWebRequest 架构
UnityWebRequest 由三个元素组成。
◾UploadHandler 处理数据 将数据发送到服务器 的对象
◾DownloadHandler 从服务器接收数据 的对象
◾UnityWebRequest 负责 HTTP 通信流量控制来管理上面两个对象的对象。
来说明这些对象之间的关系,如下所示。
基本用法
比较UnityWebRequest 和 WWW 类的基本用法。
GET
www通过 url的写法:
using UnityEngine;
using System.Collections;
class MyBehaviour : public MonoBehaviour {
void Start() {
StartCoroutine(GetText());
}
IEnumerator GetText() {
WWW request = new WWW("http://example.com");
yield return request;
if (! string .IsNullOrEmpty(request.error)) {
Debug.Log(request.error)
} else {
//
if (request.responseHeaders.ContainsKey("STATUS") &&
request.responseHeaders["STATUS"] == 200) {
//
string text = request.text;
//
byte [] results = request.bytes;
}
}
}
}
换成 UnityWebRequest的 书写方式:// https://docs.unity3d.com/Manual/UnityWebRequest.html
using UnityEngine;
using System.Collections;
using UnityEngine.Experimental.Networking;
//
// using UnityEngine.Networking;
class MyBehaviour : public MonoBehaviour {
void Start() {
StartCoroutine(GetText());
}
IEnumerator GetText() {
UnityWebRequest request = UnityWebRequest.Get("http://example.com");
//
// UnityWebRequest request = new UnityWebRequest("http://example.com");
//
// request.method = UnityWebRequest.kHttpVerbGET;
//
yield return request.Send();
//
if (request.isError) {
Debug.Log(request.error);
} else {
if (request.responseCode == 200) {
//
string text = request.downloadHandler.text;
//
byte [] results = request.downloadHandler.data;
}
}
}
}
关于更多的内容 自己观看文档吧!
相关文章推荐
- Unity3D iOS 平台放弃 WWW 采用 UnityWebRequest
- unity 新的网络请求方式,替代www
- WP7 网络操作(2) HttpWebRequest GET请求队列
- Http请求之--C#的HttpWebRequest实现POST方式请求
- Web地图服务、WMS 请求方式、网络地图服务(WMS)的三大操作
- Windows Phone 7(WP7)开发 网络操作(1) HttpWebRequest基本的GET请求
- Unity中的WWW网络请求
- asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
- .Net Core下发送WebRequest请求的两种方式
- Web地图服务、WMS 请求方式、网络地图服务(WMS)的三大操作
- 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
- Web地图服务、WMS 请求方式、网络地图服务(WMS)的三大操作
- UnityWebRequest下载网络资源,支持断点续传、多文件同时下载
- Windows Phone 7(WP7)开发 网络操作(2) HttpWebRequest GET请求队列
- winphone 网络请求HttpWebRequest
- C#、.NET网络请求总结(WebClient和WebRequest)
- webrequest请求url,get方式
- iOS-95-网络请求方式汇总(包含AFNetworking、NSMutableURLRequest)
- 网络请求方式在客户端与web端的应用和使用技巧
- 使用HttpWebRequest发送自定义POST请求(以http方式推送消息)