栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

Unity3D:HTTP请求模块

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unity3D:HTTP请求模块

先上接口

using System;
using System.Collections.Generic;
using UnityEngine;

namespace YDB.Http
{
    public interface IHttp
    {
        /// 
        /// Get
        /// 
        /// 回调
        /// 地址
        void Get(Action callback,string url);
        /// 
        /// Get
        /// 
        /// 回调
        /// 地址
        void Get(Action callback, string url);
        /// 
        /// Get
        /// 
        /// 回调
        /// 地址
        void Get(Action callback, string url);
        /// 
        /// Post
        /// 
        /// 参数
        /// 地址
        void Post(Dictionary parameters, string url);
    }
}

接口具体实现

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

namespace YDB.Http
{
    public class Http : MonoBehaviour,IHttp
    {
        public void Get(Action callback, string url)
        {
            if(callback == null)
            {
                Debug.LogWarning("回调为空,请求了也没屁用");
            }
            UnityWebRequest unityWebRequest = UnityWebRequest.Get(url);
            StartCoroutine(StartGet(callback,unityWebRequest));
        }

        public void Get(Action callback, string url)
        {
            if (callback == null)
            {
                Debug.LogWarning("回调为空,请求了也没屁用");
            }
            UnityWebRequest unityWebRequest = UnityWebRequest.Get(url);
            StartCoroutine(StartGet(callback, unityWebRequest));
        }

        public void Get(Action callback, string url)
        {
            if (callback == null)
            {
                Debug.LogWarning("回调为空,请求了也没屁用");
            }
            UnityWebRequest unityWebRequest = UnityWebRequest.Get(url);
            DownloadHandlerTexture downloadHandler = new DownloadHandlerTexture();
            unityWebRequest.downloadHandler = downloadHandler;
            StartCoroutine(StartGet(callback, unityWebRequest));
        }

        public void Post(Dictionary parameters, string url)
        {
            UnityWebRequest unityWebRequest = UnityWebRequest.Post(url, parameters);
            StartCoroutine(StartPost(unityWebRequest));
        }
        private IEnumerator StartPost(UnityWebRequest uwr)
        {
            yield return uwr.SendWebRequest();
            if (uwr.isHttpError || uwr.isNetworkError)
            {
                Debug.LogError(uwr.error);
            }
            else
            {
                Debug.Log("Post请求成功");
            }
        }
        /// 
        /// 异步网络请求
        /// 
        /// 回调类型
        /// 回调
        /// 请求参数
        /// 
        private IEnumerator StartGet(Action callback, UnityWebRequest uwr) where T : class
        {
            yield return uwr.SendWebRequest();
            if (uwr.isHttpError || uwr.isNetworkError)
            {
                Debug.LogError(uwr.error);
            }
            else
            {
                Debug.Log("Get请求成功");
                Type type = typeof(T);
                if (type == typeof(string))
                {
                    string text = uwr.downloadHandler.text;
                    callback(text as T);
                }
                else if (type == typeof(byte[]))
                {
                    byte[] packet = uwr.downloadHandler.data;
                    callback(packet as T);
                }
                else if (type == typeof(Texture))
                {
                    //特殊的文件类型,通过不同的Handler来下载
                    DownloadHandlerTexture downloadHandler = uwr.downloadHandler as DownloadHandlerTexture;
                    Texture texture = downloadHandler.texture;
                    callback(texture as T);
                }
            }
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/899454.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号