unity学习笔记 UnityWebRequest使用心得

unity学习笔记 UnityWebRequest使用心得

UnityWebRequest隐藏用法

功能

  1. 用于调用POST,但请求头为octet-stream的请求,并且在返回的数据中不断地对数据进行处理
  2. Restsharp插件能做到的,UnityWebRequest也能做到,所有常用的http请求
  3. Restsharp不能做到的,UnityWebRequest也能做到 在返回的数据流中对主线程的ui进行处理 详情可查看此贴Restsharp使用及局限

使用方式

// 创建一个字典,用于存储和判断数据是否重复
Dictionary<string, string> list = new Dictionary<string, string>();
public IEnumerator tet()
{
    list.Clear();
    WWWForm form = new WWWForm();
	//如果需要携带参数的请在form中添加
    using (var request = UnityWebRequest.Post("你的url", form))
    {
        request.SetRequestHeader("Accept", "application/octet-stream");
        //此时不插入yield return 关键词,如果插入,数据将只能在全部接收完毕后获取和调用
        request.SendWebRequest();
        //新建一个字节流进行接收
        byte[] results = new byte[1024];
        //以请求是否结束为循环条件对数据进行处理
        while (!request.isDone)
        {
        	//获取数据
            results = request.downloadHandler.data;
            //对数据进行简单的筛选
            if (results != null)
            {
            	//调用处理数据的函数
                this.HandlerStreamData(results);
            }
            yield return 0;
        }
        results = request.downloadHandler.data;
        //请求完成,由于上面的代码只对请求未完成时的数据进行了处理
        //因此在最后还需要处理请求完成时的数据
        if (request.isDone && results != null)
        {
            this.HandlerStreamData(results);
        }
    }

    yield return null;

}

/***
此方法用于将获取到的二进制数据转成字符串
***/
private void HandlerStreamData(byte[] bytes)
{
    string line = "";
    MemoryStream responseStream = new MemoryStream(bytes);
    var streamReader = new StreamReader(responseStream);
    while ((line = streamReader.ReadLine()) != null)
    {
        if (!list.ContainsKey(line))
        {
        //这里请写入你接收到数据后需要做的代码逻辑
        //这里可以执行主线程才能执行的所有代码,如ui的更新,协程的调用等等
            list.Add(line, line);
            text.text += line;
            Debug.Log(line);
        }
    }
}

以上是通过研究unitywebrequest接收文件类型的逻辑进行了修改之后的处理方式,因为接收文件也是二进制的数据流,那么照理来说做法和功能应该都是一样的才对,本着这个想法终于给我研究和等到了成功实现的今天

相关推荐

  1. unity学习笔记 UnityWebRequest使用心得

    2024-04-10 07:08:04       42 阅读
  2. unity学习笔记 Restsharp 使用心得

    2024-04-10 07:08:04       44 阅读
  3. unity 使用UnityWebRequest从服务器下载

    2024-04-10 07:08:04       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-10 07:08:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-10 07:08:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-10 07:08:04       87 阅读
  4. Python语言-面向对象

    2024-04-10 07:08:04       96 阅读

热门阅读

  1. Android 在xml 布局中如何嵌套 Jetpack Compose

    2024-04-10 07:08:04       32 阅读
  2. Spring 之 IoC基于XML管理Bean

    2024-04-10 07:08:04       31 阅读
  3. 010 spring整合mybatis(事务)(xml)

    2024-04-10 07:08:04       30 阅读
  4. MySQL 建表语句详解

    2024-04-10 07:08:04       39 阅读
  5. hive-分桶-索引(初篇)

    2024-04-10 07:08:04       41 阅读
  6. Golang 实现一个简单的 RPC 服务

    2024-04-10 07:08:04       46 阅读
  7. Servlet3.0 Http函数 介绍 + upload file 源码阅读

    2024-04-10 07:08:04       39 阅读
  8. 【vim 学习系列文章 18 -- 选中行前后增加两行】

    2024-04-10 07:08:04       39 阅读
  9. mac 怎么在 iterm 中 打印文件路径 树结构

    2024-04-10 07:08:04       38 阅读