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
}
Http通信
最新推荐文章于 2023-02-27 17:03:27 发布