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);}elsegetDate(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);}elsegetDate(request.downloadHandler.text);}}
其中GetDate getDate是一个委托,用来接收返回的数据
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{//解析各种IDtestData = 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);}elsegetDate(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);}elsegetDate(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相关推荐
- python的前端和后端_前端与后端的数据交互(jquery ajax+python flask)
前端与后端的数据交互,最常用的就是GET.POST,比较常用的用法是:提交表单数据到后端,后端返回json 前端的数据发送与接收 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收 ...
- python后端数据发送到前端_前端与后端的数据交互(jquery ajax+python flask)
前端与后端的数据交互,最常用的就是GET.POST,比较常用的用法是:提交表单数据到后端,后端返回json 前端的数据发送与接收 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收 ...
- 安卓和后端服务器数据交互
记录一下安卓和后端数据交互吧!数据传输框架OkHttp3 题外话::其实安卓和后端的数据交互也就相当于网页端和后端的交互一样.后端一样的写接口!传数据的变成了安卓端而已!由于公司要求都是写全套的,所以 ...
- python后端与前端数据交互_前端与后端的数据交互(jquery ajax+python flask)
前端与后端的数据交互,最常用的就是GET.POST,比较常用的用法是:提交表单数据到后端,后端返回json 前端的数据发送与接收 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收 ...
- 新建html带参数,本地html加载时带参数的问题
先阐述背景: app需要集成一个本地的html文件,并且在调用时url带参数.如: analysis.html?sId=417492&apiUrl=http://192.168.100.1:8 ...
- oracle查询数据库启动时的参数文件,【Oracle】数据库启动阶段参数文件、控制文件的问题处理...
Oracle启动分三个阶段: nomount: 首先查找参数文件(pfile/spfile),根据文件创建实例.Nomount的过程是启动数据库实例的过程. 没有参数文件无法nomount mount ...
- java安装的时候无效参数,spring-boot 打成jar把后 启动时指定参数无效
今天后台项目进行修改,使用spring.profiles来指定启动时使用的配置文件.在项目中添加好配置文件后使用java -jar .\base-exec.jar --spring.profiles. ...
- echarts前后端交互数据_如何避免前后端在数据交互方面的相爱相杀?
全前端包掉?还是全后端包掉?谁能裁决?所以,出现了以下对话: [问题点]所以,怎么办捏? Ebiubiu有话说: [划重点]需要根据实际业务不同场景下的情况做实际判断决策 前端界面包含两类信息:数据内 ...
- 数据库和网页之间的数据交互
浏览器发送请求 localhost:8080/home 通过thymeleaf (xmlns:th="http://thymeleaf.org">)和model.addAtt ...
最新文章
- 【驱动】内核打印级别设置
- openstack的网络、子网、端口的关系
- 装配图位置偏转怎么调整_大偏转角液晶偏振光栅的研究
- git修改文件权限方式
- 又一次寻找bug的经历...这次是 openlayers + chrome + win7
- AngularJS学习笔记(1) - AngularJS入门
- 做好开源项目 需要坚持
- 浅谈.net的后台校验
- EasyUi通过POI 实现导出xls表格功能
- 自动安装与配置复制batch脚本
- 基于单片机的电子密码锁设计
- 3种结构ZnO基半导体纳米复合材料-图文详解
- u盘感染病毒文件夹变成exe
- 第六届“蓝帽杯”全国大学生网络安全技能大赛-初赛Writeup
- 恐鬼症(Phasmophobia)联机版
- html2canvas 在ios 13.4.x 、 13.5.x 微信浏览器中失效无反应
- 大数据分析的技术有哪些?
- mongodb 基于3千万条数据, 查询30万结果集,分页问题
- Revit二次开发环境配置(Revit 2020 +Visual Studio 2019)
- git submodule解决多包协作