Unity中Http框架

news/2024/12/5 19:04:08/
http://www.w3.org/2000/svg" style="display: none;">

Unity中Http框架

  • 介绍
  • 框架代码
  • 使用方法
  • 总结

介绍

最近做了ASP.NET Web应用程序(.Net Framework)的Http服务,所以想也把之前我的Http框架也整理一下发布出来供大家参考。

框架代码

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;public class NetWorkHttpManager : MonoBehaviour
{#region 属性/// <summary>/// Web请求回调/// </summary>private Action<CallBackArgs> m_CallBack;/// <summary>/// Web请求回调数据/// </summary>private CallBackArgs m_CallBackArgs;/// <summary>/// 是否繁忙/// </summary>private bool m_IsBusy = false;/// <summary>/// 供外部访问是否繁忙/// </summary>public bool IsBusy{get{return m_IsBusy;}}/// <summary>/// 网络字典/// </summary>private Dictionary<string, string> m_httpDic = new Dictionary<string, string>();#endregionpublic static NetWorkHttpManager Instance;private void Awake(){Instance = this;m_CallBackArgs = new CallBackArgs();}#region 键值对/// <summary>/// 添加键值对/// </summary>/// <param name="key"></param>/// <param name="value"></param>public void AddValueToDic(string key, string value){m_httpDic.Add(key,value);}/// <summary>/// 移除字典/// </summary>/// <param name="key"></param>public void RemoveValueToDic(string key){if (m_httpDic.ContainsKey(key)){m_httpDic.Remove(key);}}/// <summary>/// 获取字典/// </summary>public Dictionary<string,string> GetDic(){return m_httpDic;}/// <summary>/// 清楚字典/// </summary>public void ClearDic(){m_httpDic.Clear();}#endregion#region SendData 发送Web数据public void SendData(string url, Action<CallBackArgs> callBack, bool IsPost = false, Dictionary<string, string> dic = null){if (m_IsBusy) return;m_IsBusy = true;m_CallBack = callBack;if (!IsPost) GetUrl(url);else{PostUrl(url,dic);}}#endregion#region GetUrl Get请求/// <summary>/// Get请求/// </summary>/// <param name="url"></param>private void GetUrl(string url){UnityWebRequest req = UnityWebRequest.Get(url);StartCoroutine(Request(req));}#endregion#region PostUrl Post请求/// <summary>/// Post请求/// </summary>/// <param name="url"></param>/// <param name="json"></param>private void PostUrl(string url, Dictionary<string, string> dic){UnityWebRequest req = UnityWebRequest.Post(url, dic);StartCoroutine(Request(req));}#endregion#region Request 请求服务器/// <summary>/// 请求服务器/// </summary>/// <param name="req"></param>/// <returns></returns>private IEnumerator Request(UnityWebRequest req){yield return req.SendWebRequest();m_IsBusy = false;//没有错误if (string.IsNullOrEmpty(req.error)){if (req.downloadHandler.text == "null"){if (m_CallBack != null){m_CallBackArgs.HasError = true;m_CallBackArgs.ErrorMsg = "未请求到用户";m_CallBack(m_CallBackArgs);}}else{if (m_CallBack != null){m_CallBackArgs.HasError = false;m_CallBackArgs.ErrorMsg = "";m_CallBackArgs.Value = req.downloadHandler.text;m_CallBack(m_CallBackArgs);}}}//有错误else{if (m_CallBack != null){m_CallBackArgs.HasError = true;m_CallBackArgs.ErrorMsg = req.error;m_CallBack(m_CallBackArgs);}}}#endregion}#region 回调类/// <summary>
/// Web请求回调数据
/// </summary>
public class CallBackArgs : EventArgs
{/// <summary>/// 是否有错误/// </summary>public bool HasError;/// <summary>/// 错误原因/// </summary>public string ErrorMsg;/// <summary>/// 返回值/// </summary>public string Value;
}#endregion

使用方法

		//Get请求if (!NetWorkHttpManager.Instance.IsBusy) {NetWorkHttpManager.Instance.SendData("urlxxxxxxxxxxxxx", (cb) => {if (cb.HasError) {Debug.LogError(cb.ErrorMsg);}else {Debug.LogError(cb.Value);}});}//Post请求if (!NetWorkHttpManager.Instance.IsBusy) {JsonData jsonData = new JsonData();jsonData["UserName"] = "ck";jsonData["Pwd"] = "ck123";NetWorkHttpManager.Instance.ClearDic();NetWorkHttpManager.Instance.AddValueToDic("", jsonData.ToJson());NetWorkHttpManager.Instance.SendData("http://192.168.1.120:8023/api/TestWeb", (cb) =>{if (cb.HasError){Debug.LogError(cb.ErrorMsg);}else{Debug.LogError(cb.Value);}}, true, NetWorkHttpManager.Instance.GetDic());}

总结

感谢大家的支持!


http://www.ppmy.cn/news/1551240.html

相关文章

【LeetCode每日一题】——189.轮转数组

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【题目进阶】八【解题思路】九【时空频度】十【代码实现】十一【提交结果】 一【题目类别】 数组 二【题目难度】 中等 三【题目编号】 189.轮转数组 四【题目描述】 …

随机变量的线性最小均方估计(LMMSE)——多个观测变量

假设有一个随机变量 x x x需要估计&#xff0c;线性最小均方误差&#xff08;Linear Minimum Mean Square Error, LMMSE&#xff09;估计的目标是找到一个线性估计器 x ^ ∑ i 0 N − 1 a i y i b \hat{x} \sum_{i0}^{N-1} a_i y_i b x^∑i0N−1​ai​yi​b&#xff0c;使…

怎样安装和启动Apache HTTP服务器(httpd)和PHP?

安装和启动Apache HTTP服务器&#xff08;httpd&#xff09;和PHP需要运行下面的程序&#xff1a; #&#xff01;/bin/bash yum install -y httpd php systemctl start httpd systemctl enable httpd 其中&#xff1a; #&#xff01;/bin/bash 表示使用Bash作为脚本的解释器。…

5.2.机器学习--岭回归+局部线性回归

目录 1.岭回归 1.1代码示例 2.局部线性回归 2.1代码示例 1.最小二乘法&#xff1a; 平面几何表达直线(两个系数): 重新命名变量: 强行加一个x01&#xff1a; 向量表达&#xff1a; 2.损失函数&#xff1a; 矩阵表达&#xff1a; 矩阵展开&#xff1a; 推导&#xff1a; …

普通单向有头链表,用于内存资源受限,不带mmu的单片机

#include <stdint.h> #include <stdbool.h> #include <stdio.h>#define NODE_COUNT 10 // 定义节点的总数量// 链表节点结构 typedef struct Node {int data; // 节点的数据struct Node* next; // 指向下一个节点的指针 } Node;// 全局节点数组和链…

聊一聊Elasticsearch的索引(2)

1、索引状态的管理 对索引状态的管理操作包括&#xff1a;清空缓存&#xff08;clear cache&#xff09;、刷新索引&#xff08;refresh index&#xff09;、冲洗索引&#xff08;refresh index&#xff09;、强制合并&#xff08;force merge&#xff09;、关闭索引&#xff…

php+Mysql单页支持不同数据结构不同查询条件查搜多表实例

phpMysql单页支持不同数据结构不同查询条件查搜多表实例 本来还要增加删 改 新增的&#xff0c;眼睛需要休息所以放弃后续制作(增删改代码已删或注释) 直接用可以用于自己多表查搜&#xff0c;界面还可以&#xff1b;有兴趣的可以自己二次开发成改删增 <?php function co…

java jvm部分命令 ~~还在完善中

命令整理 jps -q 只输出进程号 -m main 函数的参数 -l 主类全名 -v 输出jvm参数 jstat jstat -gc pid 1000 10 class gc gccapacity gcutil gccause gcnew gcnewcapacity gcold gcoldcapacity compiler printcompilation gcmetacapacity jinfo -sysprops pid -flags pid -flag…