文章目录
- 2.1 Http请求
- 2.2 Websocket连接
BestHTTP/2是一个HTTP/1.1和HTTP/2实现,支持几乎所有的Unity 移动和独立平台。(官网)
2.1 Http请求
- 如何发送HTTP请求
Http请求类:HTTPRequest;
构造函数共有 8 个:
public HTTPRequest(Uri uri); public HTTPRequest(Uri uri, OnRequestFinishedDelegate callback); public HTTPRequest(Uri uri, HTTPMethods methodType); public HTTPRequest(Uri uri, bool isKeepAlive, OnRequestFinishedDelegate callback); public HTTPRequest(Uri uri, HTTPMethods methodType, OnRequestFinishedDelegate callback); public HTTPRequest(Uri uri, HTTPMethods methodType, bool isKeepAlive, OnRequestFinishedDelegate callback); public HTTPRequest(Uri uri, bool isKeepAlive, bool disableCache, OnRequestFinishedDelegate callback); public HTTPRequest(Uri uri, HTTPMethods methodType, bool isKeepAlive, bool disableCache, OnRequestFinishedDelegate callback);
HTTPRequest参数说明:
- uri:请求的目标 URL 或 URI。
- methodType:指定 HTTP 请求的方法类型,例如 GET、POST、PUT 等。
- isKeepAlive:指示是否保持与服务器的连接活动状态。如果设置为 true,则在请求完成后保持连接打开;如果设置为 false,则在每个请求完成后关闭连接。
- disableCache:指示是否禁用缓存。如果设置为 true,则禁用缓存,确保每次请求都会从服务器获取最新的数据。
- callback:请求完成时的回调函数,可以在其中处理响应数据。
示例:
//创建一个 get 请求,禁用缓存并在请求完成后关闭连接,接收到返回数据时将返回数据打印到控制台 HTTPRequest request = new HTTPRequest(new Uri("http://127.0.0.1/info"), HTTPMethods.Get, false, true, (request, response) => { Debug.Log(response.Data); });
- 如何携带参数
路径参数:
路径参数直接拼接到Uri即可;
示例:
int infoId = 1; string myUri = $"http://127.0.0.1/info/{infoId}"; HTTPRequest request = new HTTPRequest(new Uri(myUri), HTTPMethods.Get);
请求参数:
使用AddField进行添加,AddField有两个参数,参数一是fieldName,参数二是value;
示例:
HTTPRequest request = new HTTPRequest(new Uri("http://127.0.0.1/login"), HTTPMethods.Post, OnRequestFinished); request.AddField("username", "admin"); request.AddField("password", "123456");
请求头参数:
使用AddHeader进行添加请求头,和AddField类似AddHeader也是两个参数,参数一是name,参数二是value;
示例:
var request = new HTTPRequest(new Uri("http://127.0.0.1/login"), HTTPMethods.Get, OnRequestFinished); request.AddHeader("Authorization", "mytoken");
请求体参数:
HTTPRequest的实例的RawData属用于存放请求体请求体
// 将JSON数据序列化为字符串 var jsonData = "{\"username\":\"admin\",\"password\":\"123456\""}"; // 将字符串编码为UTF-8字节数组 var bytes = System.Text.Encoding.UTF8.GetBytes(jsonData); // 创建请求并将字节数组作为请求体发送 var request = new HTTPRequest(new Uri("http://127.0.0.1/login"), HTTPMethods.Post, OnRequestFinished); request.RawData = bytes; request.AddHeader("Content-Type", "application/json"); request.Send();
2.2 Websocket连接
- 创建
WebSocket webSocket = new WebSocket(new Uri("ws://127.0.0.1/webSocket"));
- 生命周期事件
OnOpen事件:在建立与服务器的连接时调用。
- 当连接建立成功后,会触发该事件,并将WebSocket对象传递给OnWebSocketOpen方法。。
OnMessage事件:从服务器收到文本消息时调用。
- 当从服务器接收到文本消息时,会触发该事件,并将WebSocket对象和消息内容传递给OnMessageReceived方法。
OnBinary事件:从服务器收到二进制blob消息时调用。
- 当从服务器接收到二进制消息时,会触发该事件,并将WebSocket对象和消息字节数组传递给OnBinaryMessageReceived方法。
OnClosed事件:在客户端或服务器关闭连接时调用,或发生内部错误。
- 当连接关闭时,会触发该事件,并将WebSocket对象、关闭代码和关闭消息传递给OnWebSocketClosed方法。
OnError事件:当无法连接到服务器、发生内部错误或连接丢失时调用。
- 当发生错误时,会触发该事件,并将WebSocket对象和异常对象传递给OnError方法。
- 当连接关闭时,会触发该事件,并将WebSocket对象、关闭代码和关闭消息传递给OnWebSocketClosed方法。
- 当从服务器接收到二进制消息时,会触发该事件,并将WebSocket对象和消息字节数组传递给OnBinaryMessageReceived方法。
- 当从服务器接收到文本消息时,会触发该事件,并将WebSocket对象和消息内容传递给OnMessageReceived方法。
- 通信方法
Open:建立连接;
Send:发送消息到服务器;
Close:断开连接;
示例:
///
/// websocket客户端 /// public class WebSocketClient : SingletonManager{ private static readonly object padlock = new object(); /// /// websocket客户端实例 /// protected static WebSocketClient instance; ////// 获取单例 /// public static WebSocketClient getInst() { if (instance == null) { lock (padlock) { if (instance == null) { instance = new WebSocketClient(); } } } return instance; } private WebSocket webSocket; ////// 连接初始化 /// public void init(long pid) { string url = GlobalConstant.WEBSOCKET_PATH + pid; webSocket = new WebSocket(new Uri(url)); webSocket.OnOpen += OnWebSocketOpen; webSocket.OnMessage += OnMessageReceived; webSocket.OnBinary += OnBinaryMessageReceived; webSocket.OnClosed += OnWebSocketClosed; webSocket.OnError += OnError; webSocket.Open(); } ////// 服务器字符串消息 /// /// /// protected void OnMessageReceived(WebSocket webSocket, string message) { //Debug.Log("Text Message received from server: " + message); } ////// 连接回调 /// /// protected void OnWebSocketOpen(WebSocket webSocket) { Debug.Log("WebSocket Open!"); } ////// 服务器二进制消息 /// /// /// protected void OnBinaryMessageReceived(WebSocket webSocket, byte[] bytes) { WsResult result = ProtoBufUtil.Deserialize(bytes); if (result.status.code != 200) { Debug.Log(result.status.code); Debug.Log(result.status.msg); return; } if (result.status.code == 200) { AnalysisUtils.getProxy()[result.sendType](bytes); } } /// /// 关闭连接回调 /// /// /// /// protected void OnWebSocketClosed(WebSocket webSocket, UInt16 code, string message) { Debug.Log("WebSocket Closed!"); } ////// 错误通知 /// /// /// protected void OnError(WebSocket ws, string ex) { string errorMsg = string.Empty; if (ws.InternalRequest.Response != null) { errorMsg = string.Format("Status Code from Server: {0} and Message: {1}", ws.InternalRequest.Response.StatusCode, ws.InternalRequest.Response.Message); } Debug.Log("An error occured: " + (ex != null ? ex : "Unknown: " + errorMsg)); } ////// 发送字符串: /// /// public void OnSend(string msg) { webSocket.Send(msg); } ////// 发送二进制流: /// /// public void OnSend(byte[] buffer) { webSocket.Send(buffer); } ////// 断开连接 /// public void OnClose() { webSocket.Close(); } }上一章 【Unity DOTween插件常用方法(二)】
猜你喜欢
- 17天前(江西启动“唱游江西”计划)江西启动“唱游江西”计划
- 17天前(中旅酒店 维景)中旅酒店首次AI数字人直播亮相南京维景
- 17天前(屿见不一样是哪个酒店)屿见白纱,遇见自己 “佳能PhotoGirls屿见白纱”摄影派对玩转海岛
- 17天前(云南南博会展馆)旅居云南馆亮相第9届南博会
- 17天前(新西兰航空官方网站)新西兰航空85周年焕新启航 全方位客舱升级,飞「悦」快意时光
- 17天前(马尔代夫华尔道夫酒店多少钱)Chef Zhao就任马尔代夫伊挞富士岛华尔道夫酒店Li Long中餐厅新主厨
- 17天前(辽宁新增6个国家4a级旅游景区有哪些)辽宁新增6个国家4A级旅游景区
- 17天前(“三天跨两城”催生租车新需求,神州租车清明跨城订单同比增长416%)“三天跨两城”催生租车新需求,神州租车清明跨城订单同比增长416%
- 17天前(泛舟诗海觅春迹什么意思)泛舟觅桃源,又一头部机构下场文旅赛道
- 17天前(阿斯塔纳航空属于哪个联盟)阿斯塔纳航空荣获Skytrax世界航空公司大奖,将继续助力中哈交流往来
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章