您的位置:首页 > 理论基础 > 计算机网络

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 通信流量控制来管理上面两个对象的对象。
来说明这些对象之间的关系,如下所示。



基本用法
 
比较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;
}
}
}
}


关于更多的内容  自己观看文档吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: