Unity发送Http

server/2024/10/23 23:06:53/

本篇实现在Unity中发送Http请求。

讲解Get,Post,用于在Unity中进行数据对接。

一、Get

IEnumerator Get()
{string url = "";//链接UnityWebRequest request = UnityWebRequest.Get(url);//创建UnityWebRequest实例并设置请求方式为Getyield return request.SendWebRequest();//等待响应后再运行if (request.isNetworkError || request.isHttpError){//这里做响应失败的逻辑}else{//这里做响应成功的逻辑}
}

二、用Post传输json

IEnumerator Post()
{UnityWebRequest sendrequest = new UnityWebRequest(url,"POST");//编写Json文件,这里用字符串转换string Sessagejson = "{" +"\"" + "messages" + "\"" + ":" + "[" +"{" +"\"" + "role" + "\"" + ":" + "\"" + "user" + "\"" + "," +"\"" + "content" + "\"" + ":" + "\"" + inputField.text + "\"" +"}" +"]" +"}";byte[] SendJson = new UTF8Encoding().GetBytes(Sessagejson);//将字符串内容转换为字节数组sendrequest.uploadHandler = new UploadHandlerRaw(SendJson);//设置上传处理器sendrequest.downloadHandler = new DownloadHandlerBuffer();//设置下载处理器sendrequest.SetRequestHeader("Content-Type", "application/json");//设置请求头yield return sendrequest.SendWebRequest();//发送并等待响应后再继续if (sendrequest.result != UnityWebRequest.Result.ConnectionError && sendrequest.result != UnityWebRequest.Result.ProtocolError){//这里使用正则表达式进行解析json文件string pattern2 = "\"result\":\"(.*?)\"";//result表示在json文本中找到result以及他的内容Match match2 = Regex.Match(sendrequest.downloadHandler.text, pattern2);//在返回的json内容中查找Debug.log(match2.Groups[1].Value);//将查找到的内容输出}else{Debug.LogError(sendrequest.error);}//最后释放资源  sendrequest.Dispose();
}

注意这里使用的正则表达式解析json的方法只适合简单结构的json文件,如果你有更复杂的需要解析请参考我其他篇章或查找其他资料。

三、用Post传输文件

IEnumerator UploadAttachment_Api()
{//这一部分先获取文件(因为这是在Unity导出Web后使用的,其中表格位于streamingAsset文件夹下)   //文件上传部分需要用户选择或从服务器获取,WebGL不允许访问本地文件string fileName = "LabReport.xlsx";  // 假设文件名为LabReport.xlsxbyte[] filedata = null;// 使用 UnityWebRequest 获取文件(假设文件位于服务器)string fileUrl = Path.Combine(UnityEngine.Application.streamingAssetsPath, fileName);UnityWebRequest fileRequest = UnityWebRequest.Get(fileUrl);yield return fileRequest.SendWebRequest();filedata = fileRequest.downloadHandler.data;//这一部分开始发送表格文件string url = "http://srm.imut.edu.cn/api/uploadfile"; //设置链接WWWForm attachment_form = new WWWForm();//WWWForm是Unity提供的处理HTTP表单数据的类attachment_form.AddField("uniqid", uniqid);           // 上传参数,这里以uniqid为例attachment_form.AddBinaryData("file", filedata, fileName);//添加文件UnityWebRequest up_att_request = UnityWebRequest.Post(url, attachment_form);// 设置Authorization头up_att_request.SetRequestHeader("Authorization", accessToken);//根据实际情况填写yield return up_att_request.SendWebRequest();if (up_att_request.isNetworkError || up_att_request.isHttpError){Debug.Log("发送失败");}else{Debug.Log("发送成功");}
}

结尾:代码解析都写到了代码后面。有任何错误请指出,补充请评论,看到会第一时间回复,谢谢。


http://www.ppmy.cn/server/134280.html

相关文章

AI 3D拣选系统行业分析:物流行业是最主要的需求来源

AI 3D拣选系统是一种集成了先进传感技术、机器人技术和计算机视觉技术的自动化分拣解决方案。它能够在三维空间内快速、准确地识别和分拣各种形状、大小和材质的物品,大大提高了物流效率和准确性。该系统通过高精度的3D传感器和先进的视觉算法,能够实时捕…

数据结构《顺序表》

文章目录 前言一、什么是顺序表?1.1 顺序表的概念1.2 顺序表的建立 二、MyArrayList的实现三、顺序表的方法四、关于顺序表的例子总结 前言 提示:这里涉及到的ArrayList类是一个泛型类,同时后面的很多内容都会涉及到泛型,如果不了…

Go 项目如何集成类似mybatisPlus插件呢?GORM走起!!

导读: 在 Go 项目中,虽然没有像 MyBatis Plus 这样特定的 ORM 插件,但可以使用功能相似的 Go ORM 框架,比如 GORM,它支持链式查询、自动迁移、预加载等功能,与 MyBatis Plus 有相似之处。通过一些插件或扩…

深信服超融合HCI6.8.0R2滚动热升级至HCI6.9.1

PS:滚动热升级没有业务影响,集群内主机逐台升级,会自动迁移运行中的虚拟机至其他主机; 整体巡检加上升级完成大概要三个小时的时间。如果在升级过程中,有跨集群迁移的任务,需要先停掉,不然无法…

软考机考系统架构师论文如何高效画图?

在软考机考系统架构设计师的论文中,画图是提升论文表达效果和理解程度的重要手段。以下详细阐述了如何在论文中画图以及论文机考时需要注意的事项: 一、论文中画图的方法 明确画图目的 在开始画图之前,首要任务是明确画图的目的。这是为了…

LabVIEW互联网温湿度控制系统

系统利用LabVIEW软件与现代传感和网络通信技术,开发了仓储温湿度控制方案。该系统能够实时监控仓库内的温湿度,并通过互联网实现远程管理,确保存储物品的质量与安全。通过自动化调控机制与远程监控功能,仓储管理更加高效智能。. ​…

Vue组件开发的属性

组件开发的属性: 1.ref属性: 如果在vue里,想要获取DOM对象,并且不想使用JS的原生语法,那么就可以使用ref属性 ref属性的用法: 1)在HTML元素的开始标记中,或者在Vue子组件中的开始…

五、事务和并发控制及索引和性能优化

一. 事务和并发控制是数据库管理系统中用于处理多个用户并发访问共享数据的重要机制。 下面是对事务和并发控制的详细讲解和示例说明:事务: 事务是一组数据库操作的逻辑单元,它要么全部执行成功,要么全部回滚。事务通过保证数据操…