目录
比www更节约系统性能,传输速度更快
·作用
用于与Web服务器进行同信
·请求
1.get
传输更快
不安全
void Start()
{
StartCoroutine(Get());
}
IEnumerator Get()
{
UnityWebRequest webRequest = UnityWebRequest.Get("http://www.baidu.com");
yield return webRequest.SendWebRequest();//开始与远程服务器通信。
//异常处理,很多博文用了error!=null这是错误的,请看下文其他属性部分
//isHttpError:UnityWebRequest 接收到指示错误的 HTTP 响应代码后,返回 true。(只读)
//isNetworkError:UnityWebRequest 遇到系统错误后,返回 true。(只读)
if (webRequest.isHttpError || webRequest.isNetworkError)
Debug.Log(webRequest.error);//error:请求或响应时遇到的任何系统错误。(只读)
else
{
Debug.Log(webRequest.downloadHandler.text);//从远程服务器接收的主体数据。
}
}
2.post
安全
void Start()
{
StartCoroutine(Post());
}
IEnumerator Post()
{
WWWForm form = new WWWForm();
//键值对
form.AddField("key", "value");
form.AddField("name", "mafanwei");
form.AddField("blog", "qwe25878");
UnityWebRequest webRequest = UnityWebRequest.Post("http://www.baidu.com", form);
yield return webRequest.SendWebRequest();//开始与远程服务器通信。
//异常处理,很多博文用了error!=null这是错误的,请看下文其他属性部分
if (webRequest.isHttpError || webRequest.isNetworkError)
Debug.Log(webRequest.error);
else
{
Debug.Log(webRequest.downloadHandler.text);
}
}
·读取图片
public Texture img;
private void Start()
{
//StartCoroutine(LoadTexture("http://127.0.0.1:8099/01.jpg"));
//StartCoroutine(LoadTexture("http://127.0.0.1:8099/02.mp4"));
StartCoroutine(LoadTexture("http://127.0.0.1:8099/01.mp3"));
}
IEnumerator LoadTexture(string url)
{
using (UnityWebRequest webRequest = UnityWebRequestTexture.GetTexture(url))
{
yield return webRequest.SendWebRequest();
if (webRequest.isHttpError || webRequest.isNetworkError)
{
Debug.Log("下载出错" + webRequest.responseCode + "," + webRequest.error);
}
else
{
//图片赋值 DownloadHandlerTexture:专用于下载要用作 Texture 对象的图像的 DownloadHandler 子类
img = (webRequest.downloadHandler as DownloadHandlerTexture).texture;
输出图片的宽
//Debug.Log((webRequest.downloadHandler as DownloadHandlerTexture).texture.width);
输出图片的高
//Debug.Log(DownloadHandlerTexture.GetContent(webRequest).height);
}
}
}
private void SaveField(Byte[] bytes, string texName, string spriteType)
{
File.WriteAllBytes(Application.dataPath + "/" + texName + spriteType, bytes); //直接放在了Assets目录下,存在地址自行修改
}
void OnGUI()
{
GUI.Label(new Rect(10, 10, 500, 500), img);//绘制纹理
}
private void SaveLocally(Texture2D texture2D, string texName, string spriteType)
{
Byte[] bytes = texture2D.EncodeToPNG();
File.WriteAllBytes(Application.dataPath + "/" + texName + spriteType, bytes); //直接放在了Assets目录下,存在地址自行修改
}
·下载AB包
IEnumerator LoadAB(string url)
{
using (UnityWebRequest req = UnityWebRequestAssetBundle.GetAssetBundle(url))
{
yield return req.SendWebRequest();
if (req.error == null)
{
Debug.Log((req.downloadHandler as DownloadHandlerAssetBundle).assetBundle.name);
Debug.Log(DownloadHandlerAssetBundle.GetContent(req).name);
}
else
{
Debug.Log("下载出错" + req.responseCode + "," + req.error);
}
}
}
·下载文件到本地
private void Start()
{
//StartCoroutine(LoadTexture("http://127.0.0.1:8099/01.jpg"));
//StartCoroutine(LoadTexture("http://127.0.0.1:8099/02.mp4"));
StartCoroutine(LoadTexture("http://127.0.0.1:8099/01.mp3"));
}
IEnumerator LoadTexture(string url)
{
using (UnityWebRequest webRequest = UnityWebRequest.Get(url))
{
yield return webRequest.SendWebRequest();
if (webRequest.isHttpError || webRequest.isNetworkError)
{
Debug.Log("下载出错" + webRequest.responseCode + "," + webRequest.error);
}
else
{
SaveField(webRequest.downloadHandler.data, "视频", ".mp4");
}
}
}
/// <summary>
/// 保存文件方法
/// </summary>
/// <param name="bytes"></param>
/// <param name="texName">保存文件的名字</param>
/// <param name="spriteType">保存文件的类型</param>
private void SaveField(Byte[] bytes, string texName, string spriteType)
{
//直接放在了Assets目录下,存在地址自行修改
File.WriteAllBytes(Application.dataPath + "/" + texName + spriteType, bytes);
}