栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

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

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

说明

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请求
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://www.sojson.com",
    "address":{
        "city":"北京",
        "country":"中国"
    },
    "arrayBrowser":[{
        "name":"Google",
        "url":"http://www.google.com"
    },
    {
       "name":"Baidu",
       "url":"http://www.baidu.com"
   },
   {
       "name":"SoSo",
       "url":"http://www.SoSo.com"
   }]
}

生成的实体类为

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 { get; set; }
}

将JSON内容赋值给对象

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

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/898374.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号