Http通信

来源:互联网 发布:澳大利亚同性婚姻知乎 编辑:程序博客网 时间:2024/06/05 08:01
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using System;public class NetWorkHttp : MonoBehaviour{    #region 单利模式    private static NetWorkHttp _ins;    public static NetWorkHttp Ins    {        get        {            if (_ins == null)            {                GameObject obj = new GameObject("NetWorkHttp");                DontDestroyOnLoad(obj);                _ins = obj.GetOrAddComponent<NetWorkHttp>();            }            return _ins;        }    }    #endregion    #region 属性    /// <summary>    /// web请求回调    /// </summary>    public Action<CallBackArgs> m_CallBack;    /// <summary>    /// web请求回调数据    /// </summary>    private CallBackArgs m_CallBackArgs;    /// <summary>    /// 是否繁忙    /// </summary>    private bool isBusy = false;    public bool IsBusy    {        get        {            return isBusy;        }    }    #endregion    #region 创建回调数据的类实例    private void Awake()    {        m_CallBackArgs = new CallBackArgs();    }     #endregion    #region 发送web数据    public void SendData(string url, Action<CallBackArgs> callBack, bool isPost = false, string json = "")    {        if (isBusy) return;        isBusy = true;        Debug.Log(url);        m_CallBack = callBack;        if (!isPost)        {            GetUrl(url);        }        else        {            PostUrl(url, json);        }    }     #endregion    #region Get请求    private void GetUrl(string url)    {        WWW data = new WWW(url);        StartCoroutine(Get(data));    }    private IEnumerator Get(WWW data)    {        yield return data;        isBusy = false;        if (string.IsNullOrEmpty(data.error))        {            if (data.text == "null")            {                m_CallBackArgs.IsError = true;                m_CallBackArgs.ErrorMsg = "未能请求到数据";                m_CallBack(m_CallBackArgs);            }            else            {                if (m_CallBack != null)                {                    m_CallBackArgs.IsError = false;                    m_CallBackArgs.Json = data.text;                    m_CallBack(m_CallBackArgs);                }            }        }        else        {            m_CallBackArgs.IsError = true;            m_CallBackArgs.ErrorMsg = data.error;            m_CallBack(m_CallBackArgs);        }    }    #endregion    #region POST请求    private void PostUrl(string url, string json)    {        //定义个表单        WWWForm form = new WWWForm();        //给表单增加值        form.AddField("", json);        WWW data = new WWW(url, form);        StartCoroutine(Resqust(data));    }    /// <summary>    /// 请求服务器    /// </summary>    /// <param name="data"></param>    /// <returns></returns>    private IEnumerator Resqust(WWW data)    {        yield return data;        isBusy = false;        if (string.IsNullOrEmpty(data.error))        {            if (data.text == "null")            {                m_CallBackArgs.IsError = true;                m_CallBackArgs.ErrorMsg = "未能请求到数据";                m_CallBack(m_CallBackArgs);            }            else            {                if (m_CallBack != null)                {                    m_CallBackArgs.IsError = false;                    m_CallBackArgs.Json = data.text;                    m_CallBack(m_CallBackArgs);                }            }        }        else        {            Debug.Log("请求出错");            m_CallBackArgs.IsError = true;            m_CallBackArgs.ErrorMsg = data.error;            m_CallBack(m_CallBackArgs);        }    }    #endregion    #region 请求回调数据类    public class CallBackArgs    {        public bool IsError;        public string ErrorMsg;        public string Json;    }    #endregion}

原创粉丝点击