Unity 启动时带参数,网页后端进行数据交互 UnityWebRequest ,Post,Get,Delete

这篇具有很好参考价值的文章主要介绍了Unity 启动时带参数,网页后端进行数据交互 UnityWebRequest ,Post,Get,Delete。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

打包后启动.exe带参数

启动传参数可以参考这篇文章: 浏览器调用本地exe(应用程序)方法

Unity准备工作

需要用到这个API

Environment.GetCommandLineArgs()

官方解释:返回包含当前进程的命令行参数的字符串数组
返回值是一个string[],当Length>1的时候就是带参数,注意:在UnityEditor模式也就是编辑器模式会有默认参数返回,Length是大于1的

UnityWebRequest API使用

常用的就是Get与Post,代码比较简单,有的地方传参时需要注意有没有RequestHeader,这个需要进行特殊处理

代码
	IEnumerator IePostRequest(string url, object mRequestData, GetDate getDate)
    {
        string paramStr = JsonUtility.ToJson(mRequestData);
        byte[] databyte = Encoding.UTF8.GetBytes(paramStr);
        using (var request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST))
        {
            request.uploadHandler = new UploadHandlerRaw(databyte);
            request.downloadHandler = new DownloadHandlerBuffer();

            request.SetRequestHeader("Content-Type", "application/json;charset=utf-8");
            request.SetRequestHeader("Authorization", "Bearer" + sessionId);
            request.SetRequestHeader("Content-Length", databyte.Length.ToString());

            yield return request.SendWebRequest();

            if (request.result != UnityWebRequest.Result.Success)
            {
                Debug.Log(request.error);
            }
            else
                getDate(request.downloadHandler.text);
        }
    }

    IEnumerator IeGetRequest(string url, GetDate getDate)
    {
        using (var request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbGET))
        {
            request.SetRequestHeader("Content-Type", "application/json");
            request.SetRequestHeader("Authorization", "Bearer" + sessionId);
            request.downloadHandler = new DownloadHandlerBuffer();
            yield return request.SendWebRequest();

            if (request.result != UnityWebRequest.Result.Success)
            {
                Debug.Log(request.error);
            }
            else
                getDate(request.downloadHandler.text);
        }
    }

其中GetDate getDate是一个委托,用来接收返回的数据文章来源地址https://www.toymoban.com/news/detail-573997.html

public delegate void GetDate(string data);

完整代码

using System;
using System.Collections;
using System.Text;
using UnityEngine;
using UnityEngine.Networking;

public class UnityPageRequest : MonoBehaviour
{
    /// <summary>
    /// token
    /// </summary>
    string sessionId;
    public delegate void GetDate(string data);

    private void Awake()
    {
        string[] CommandLineArgs = Environment.GetCommandLineArgs();
        string testData = "";
        if (CommandLineArgs.Length < 2)
        {
            Debug.Log("没有参数");
            //Application.Quit();//启动时没有参数则退出
        }
        else
        {
            if (CommandLineArgs[1] == "")
            {
                //启动参数是空的
            }
            else
            {
                //解析各种ID
                testData = CommandLineArgs[1];
            }
        }
        ParseInitData(testData);
    }
    void ParseInitData(string data)
    {
        //启动数据在这里进行解析
        //sessionId = 解析的数据
    }
    public void PostRequest(string url, object mRequestData, GetDate getDate)
    {
        StartCoroutine(IePostRequest(url, mRequestData, getDate));
    }

    public void GetRequest(string url, string mRequestData, GetDate getDate)
    {
        StartCoroutine(IeGetRequest(url + mRequestData, getDate));
    }

    public void DeleteRequest(string url)
    {
        StartCoroutine(IeDeleteRequest(url));
    }


    IEnumerator IePostRequest(string url, object mRequestData, GetDate getDate)
    {
        string paramStr = JsonUtility.ToJson(mRequestData);
        byte[] databyte = Encoding.UTF8.GetBytes(paramStr);
        using (var request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST))
        {
            request.uploadHandler = new UploadHandlerRaw(databyte);
            request.downloadHandler = new DownloadHandlerBuffer();

            request.SetRequestHeader("Content-Type", "application/json;charset=utf-8");
            request.SetRequestHeader("Authorization", "Bearer" + sessionId);
            request.SetRequestHeader("Content-Length", databyte.Length.ToString());

            yield return request.SendWebRequest();

            if (request.result != UnityWebRequest.Result.Success)
            {
                Debug.Log(request.error);
            }
            else
                getDate(request.downloadHandler.text);
        }
    }

    IEnumerator IeGetRequest(string url, GetDate getDate)
    {
        using (var request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbGET))
        {
            request.SetRequestHeader("Content-Type", "application/json");
            request.SetRequestHeader("Authorization", "Bearer" + sessionId);
            request.downloadHandler = new DownloadHandlerBuffer();
            yield return request.SendWebRequest();

            if (request.result != UnityWebRequest.Result.Success)
            {
                Debug.Log(request.error);
            }
            else
                getDate(request.downloadHandler.text);
        }
    }

    /// <summary>
    /// Delete请求(携程)
    /// </summary>
    /// <returns></returns>
    public IEnumerator IeDeleteRequest(string url)
    {
        using (UnityWebRequest webRequest = UnityWebRequest.Delete(url))
        {
            yield return webRequest.SendWebRequest();
            if (!string.IsNullOrEmpty(webRequest.error))
            {
                Debug.Log(webRequest.error);
            }
            else
            {
                Debug.Log("Okk");
            }
        }
    }

}

到了这里,关于Unity 启动时带参数,网页后端进行数据交互 UnityWebRequest ,Post,Get,Delete的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用vue+springboot+mybatis开发的信息管理系统,前端和后端是怎么进行交互的

    1. 前端向后端发送http请求。 2. 后端接收到请求后,通过mybatis从数据库中获取所需数据。 3. 后端将处理完的数据通过restful api返回给前端。 4. 前端根据后端返回的数据进行页面渲染。 具体来说,可以分为以下几个步骤: 前端使用vue.js作为基础框架,使用axios库向后端发送h

    2024年02月06日
    浏览(73)
  • unity点击场景内物体进行交互

    提示:本文展示点击事件,另有其他自行研究 前言 一、原理 二、使用步骤 1.使用前提 2.使用脚本 总结 很多情况下我们需要对场景内的物体进行交互,今天我们采用射线检测的方法进行点击。 例如:点击场景内的Cube 进行开始旋转 提示:以下是本篇文章正文内容,下面案例

    2024年02月11日
    浏览(64)
  • 全后端交互数据加密

    通信请求使用https 对请求参数进行签名,防止数据篡改 对请求参数以及响应数据进行加解密 app中使用ssl pinning防止抓包操作 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-78n9M2PH-1677252127361)(安全.assets/https加密流程.jpg)] 加签和验签 :发送方将请求

    2024年02月03日
    浏览(36)
  • TransformControls 是 Three.js 中的一个类,用于在网页中进行 3D 场景中物体的交互式操作。

    demo案例 TransformControls 是 Three.js 中的一个类,用于在网页中进行 3D 场景中物体的交互式操作。让我们来详细讲解它的输入参数、输出、属性和方法: 输入参数: TransformControls 构造函数通常接受两个参数: camera (THREE.Camera):用于渲染场景的摄像机。这个参数是必需的。

    2024年04月15日
    浏览(69)
  • 若依ruoyi前端vue使用jsencrypt.js加密后端java进行RSA解密(前后端交互RSA加解密)

    目录 1、前后端RSA加解密实现思路 2、前端 3、后端 按照约定来说公钥一般用来加密,大家都可以获取得到,私钥用来解密,当然你也可以混着用,以下示例是前端通过加密,后端解密.  -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ81AMIIBCgKCAQEA1+05vAf7m5NcLNLkRtsm gp+QdzcW6MVdayGTGBJG0v

    2024年02月06日
    浏览(76)
  • 前端和后端交互数据类型转换

    页面是男/女 后端pojo类以及数据库中是Integer 0/1  怎么样很方便地转化? ----枚举转化-- 在web开发中有时会使用枚举作为参数,而前端在调接口时就会出现传错或者传空导致后端拿不到枚举类型。在这里就使用反序列化@JsonDeserialize 这里是对枚举进行反序列化,所以首先编写一个

    2024年03月26日
    浏览(57)
  • 【unity与android的交互】移动游戏发布更安心!Unity安卓平台打包相关的常见参数全详解

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :Unity基础实战 首先需要切换到安卓平台 step1 :打包前的基础参数的设置 step2:包名的设置需要勾选,必须要去设置的内容 打包后进行测

    2024年04月17日
    浏览(75)
  • vue使用axios发送post请求携带json body参数,后端使用@RequestBody进行接收

    最近在做自己项目中,做一个非常简单的新增用户场景,但是使用原生axios发送post请求的时候,还是踩了不少坑的。 唉,说多了都是泪,小小一个新增业务,在自己前后端一起开发的时候,硬是搞了好久。 下面就把问题总结分享下,防止后人再踩坑。 首先先看下我的接口定

    2024年02月02日
    浏览(55)
  • 【Tomcat】(Tomcat 下载Tomcat 启动Tomcat 简单部署 基于Tomcat进行网站后端开发)

    Tomcat 是一个 HTTP 服务器.HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式. HTTP 服务器我们可以通过 Java Socket 来实现. 而 Tomcat 就是基于 Java 实现的一个开源免费,也是被广泛使用的 HTTP 服务器. 官方网站:https://tomcat.apache.org/download-80.cgi 在 bin 目录中, 双击 startup.bat

    2024年02月12日
    浏览(44)
  • Unity开发进行C、C++源码交互,支持跨平台

    公司新项目,要和做C++算法的人一起合作开发,起初项目定于Windows平台,就看了一些C++和DLL交互的一些资料,做了一套生成DLL交互的接口,后来项目写方案由于设备又定到安卓平台,尝试过打包之后,DLL打包不到安卓平台,试过将dll改名打AB包然后用Assembly.Load的方式,但这种

    2024年01月18日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包