irpas技术客

Unity | Unity发送Http请求并处理得到的Json数据_Jeucai_unity 发送http请求

网络投稿 6008

说明

Unity中UnityWebRequest和WWW都可以实现HTTP请求,这里使用的是UnityWebRequest发送Post请求。

UnityAPI-UnityWebRequest 架构

UnityWebRequest 生态系统将 HTTP 事务分解为三个不同的操作:

向服务器提供数据从服务器接收数据HTTP 流量控制(例如,重定向和错误处理)

为了给高级用户提供更好的界面,这些操作均由自己的对象进行管理:

UploadHandler 对象处理数据到服务器的传输DownloadHandler 对象处理从服务器接收的数据的接收、缓冲和后处理UnityWebRequest 对象管理其他两个对象,还处理 HTTP 流量控制。此对象是定义自定义标头和 URL 的位置,也是存储错误和重定向信息的位置。

对于任何 HTTP 事务,正常的代码流程如下:

创建 Web 请求对象配置 Web 请求对象 - 设置自定义标头 - 设置 HTTP 动词(例如 GET、POST 和 HEAD - 除 Android 之外的所有平台都允许使用自定义动词) - 设置 URL *(可选)创建上传处理程序并将其附加到 Web 请求 - 提供要上传的数据 - 提供要上传的 HTTP 表单 *(可选)创建下载处理程序并将其附加到 Web 请求发送 Web 请求 - 如果在协程中,可获得 Send() 调用的结果以等待请求完成 (可选)读取从下载处理程序接收的数据 (可选)从 UnityWebRequest 对象中读取错误信息、HTTP 状态码和响应标头 步骤一:发送post请求 /* url:请求地址 */ public void Geturl() { StartCoroutine(PostRequest(url)); } IEnumerator PostRequest(string url) { //所提交的表单 WWWForm form = new WWWForm(); //加上请求参数,如参数名“Content-Type",内容”application/json“ form.AddField("Content-Type", "application/json"); //发送Post请求 using (UnityWebRequest webRequest = UnityWebRequest.Post(url, form)) { yield return webRequest.SendWebRequest(); if (!string.IsNullOrEmpty(webRequest.error)) { Debug.LogError(webRequest.error); } else { //获得返回数据 Debug.Log(webRequest.downloadHandler.text); } } } 步骤二:处理得到的Json数据

在上一步中,我们获得了返回数据webRequest.downloadHandler.text,现在处理返回的内容得到想要的数据

得到类

利用Json在线解析网站,将webRequest.downloadHandler.text生成实体类 比如JSON数据为

{ "name":"so json 在线工具", "url":"https://·", "address":{ "city":"北京", "country":"中国" }, "arrayBrowser":[{ "name":"Google", "url":"http://·" }, { "name":"Baidu", "url":"http://·" }, { "name":"SoSo", "url":"http://·" }] }

生成的实体类为

public class Address { public string city { get; set; } public string country { get; set; } } public class ArrayBrowser { public string name { get; set; } public string url { get; set; } } public class Root { public string name { get; set; } public string url { get; set; } public Address address { get; set; } public List<ArrayBrowser> arrayBrowser { get; set; } } 将JSON内容赋值给对象

这里使用LitJSON插件,将Json数据赋值给对象,从而得到所需数据。

Root root = JsonMapper.ToObject<Root>(webRequest.downloadHandler.text); string name = root.name;//"so json 在线工具" string city = root.address.city; //"北京" 参考文档:

Unity实现HTTP请求 UnityWebRequest Unity读取和解析JSON文件(1)-JSON和对象的转换 Unity 读取解析Json 文件


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Unity #发送HTTP请求 #生态系统将 #HTTP