Unity 中通过UnityWebRequest POST和GET请求服务器数据

UnityWebRequest-与后台数据传输Get/Post请求 Get/Post 阅读详情
AI摘要

博客主要介绍了Unity中UnityWebRequest进行POST和GET请求数据的方法。包括以POST形式传JSON格式参数、以GET形式传authorization参数请求数据,还提及更新后以Post形式传Form表单参数和JSON格式参数请求数据的方式,并给出了相关请求的注意事项和示例。

一、Unity中UnityWebRequest POST和GET请求数据

1、Unity 中通过UnityWebRequest  以POST形式传JSON格式(键值对格式)的参数请求数据。

注意: 1、webRequest.SetRequestHeader("Content-Type", "application/json");内容根据实际提供内容为准。

            2、需要以Header头文件的形式发送请求

 POST请求实现以下要求 

POST  "https://.....";        //提供获取Token值的服务接口地址(很重要)

入参body(json格式):
{
  "username":"后端提供",
  "password":"后端提供",
  "clientType": "WEB",
  "pid":"01967189376"
}

    private string jsonDataPost;
    public string login_URL;
    public string getData_URL;

    void Start()
    {
        login_URL = "https://......;"//提供获取Token值的服务地址(很重要)
        getData_URL = "https://.......";//提供请求数据的URL地址

        jsonDataPost = File.ReadAllText(Application.streamingAssetsPath + "/LoginData.txt");
        //jsonDataPost = "{ \"username\":\"159\", \"password\":\"hhhhhh\",\"clientType\": \"WEB\",\"pid\":\"01967189376\"}";//传JSON格式参数定义,具体根据提供的JOSN数据为准
       
        StartCoroutine(PostUrl(login_URL, jsonDataPost));
    }

    /// <summary>
    /// POST请求数据
    /// </summary>
    /// <param name="url">获取Token值的服务URL地址(很重要)</param>
    /// <param name="postData">传入请求的参数,此处参数为JOSN格式</param>
    /// <returns></returns>
    IEnumerator PostUrl(string url, string postData)
    {
        using (UnityWebRequest webRequest = new UnityWebRequest(url, "POST"))//第二种写法此行注释
        {
            //UnityWebRequest webRequest = new UnityWebRequest(url, "POST");//第二种写法此行取消注释
            byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postData);
            webRequest.uploadHandler = (UploadHandler)new UploadHandlerRaw(postBytes);
            webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
            webRequest.SetRequestHeader("Content-Type", "application/json");

            yield return webRequest.Send();
            if (webRequest.isNetworkError)
            {
                Debug.Log(webRequest.error);
            }
            else
            {
                TokenDataInfo tokenDataInfo = JsonMapper.ToObject<TokenDataInfo>(webRequest.downloadHandler.text);
                access_token = tokenDataInfo.access_token;
                refresh_token = tokenDataInfo.refresh_token;
                token_type = tokenDataInfo.token_type;
                authorization = token_type + " " + access_token;

                //Debug.LogError(authorization);
                //Debug.LogError(webRequest.downloadHandler.text);
                StartCoroutine( GetUrl(getData_URL, authorization));

            }
        }
    }

2、Unity 中通过UnityWebRequest  以GET形式传authorization 的参数请求数据。

注意:  以Header头文件的形式发送请求,authorization要放入请求头部。

GET请求实现以下要求

GET "https://.....";        //提供请求数据的URL地址,以头文件形式发起请求进行Token验证

请求头带上
authorization
bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiI3MDE1MTQ0NzM0NSIsInBpZCI6IjAxOTY3MTg5Mzc2IiwiZW50IjoiMDE5NjcxODkzNzYiLCJ0eXBlIjoiV0VCIiwiZXhwIjoxNTYwNjA2MjIwLCJqdGkiOiJkNDlhZWFkMi1lM2FhLTQ5MGItYWZiMC1iNmVmNDNmMTY5Y2UiLCJyb2xlcyI6W119.Vdumf8OOcLnfu8i2KiP7qzN1nPmSXmcwnH74LKFsydImgcVIBMT9rV4zCz8UnJxQq55XIQr1IjiAe1cIYEtESw==

    /// <summary>
    /// GET请求数据
    /// </summary>
    /// <param name="url">请求数据的URL地址</param>
    /// <param name="token">token验证的参数,此处为authorization</param>
    /// <returns></returns>
    IEnumerator GetUrl(string url, string token)
    {
        using (UnityWebRequest webRequest = new UnityWebRequest(url, "GET"))
        {
            //UnityWebRequest webRequest = new UnityWebRequest(url, "GET");
            byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(token);
            webRequest.uploadHandler = (UploadHandler)new UploadHandlerRaw(postBytes);
            webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
            webRequest.SetRequestHeader("authorization", token);//请求头文件内容

            yield return webRequest.Send();
            if (webRequest.isNetworkError)
            {
                Debug.Log(webRequest.error);
            }
            else
            {

                Debug.LogError(webRequest.downloadHandler.text);
            }
        }
    }

二、更新后UnityWebRequest请求数据的方式。

1、Unity 中通过UnityWebRequest  以Post形式传Form 表单参数请求数据。

    /// <summary>
    /// UnityWebRequest Post 表单请求
    /// </summary>
    /// <param name="url">接口地址</param>
    /// <param name="fromDic">form字典</param>
    /// <param name="callBack">回调</param>
    /// <returns></returns>
    public static IEnumerator UnityWebRequestPost(string url, Dictionary<string, string> fromDic, Action<string> callBack = null)
    {
        WWWForm form = new WWWForm();
        foreach (var item in fromDic)
        {
            form.AddField(item.Key, item.Value);
        }
        UnityWebRequest request = UnityWebRequest.Post(url, form);
        request.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        yield return request.SendWebRequest();
        if (request.result == UnityWebRequest.Result.ConnectionError)
        {
            Debug.LogError(request.error);
        }
        else
        {
            string result = request.downloadHandler.text;
            callBack?.Invoke(result);
        }
    }

2、Unity 中通过UnityWebRequest  以Post形式传JOSN格式参数请求数据。

 /// <summary>
    /// POST请求数据
    /// </summary>
    /// <param name="url"></param>
    /// <param name="postData">传入请求的参数,此处参数为JOSN格式</param>
    /// <returns></returns>
    public static IEnumerator UnityWebRequestPost(string url, string postData, Action<string> callBack = null)
    {
        using (UnityWebRequest webRequest = new UnityWebRequest(url, "POST"))//第二种写法此行注释
        {
            //UnityWebRequest webRequest = new UnityWebRequest(url, "POST");//第二种写法此行取消注释
            byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postData);
            webRequest.uploadHandler = (UploadHandler)new UploadHandlerRaw(postBytes);
            webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
            webRequest.SetRequestHeader("Content-Type", "application/json");

            yield return webRequest.SendWebRequest();
            if (webRequest.result == UnityWebRequest.Result.ConnectionError)
            {
                Debug.Log(webRequest.error);
            }
            else
            {
                string result = webRequest.downloadHandler.text;
                callBack?.Invoke(result);
            }
        }
    }

Unity之UnityWebRequest和使用 官方描述:UnityWebRequest 提供了一个模块化系统,用于构成 HTTP 请求和处理 HTTP 响应。UnityWebRequest 系统的主要目标是让 Unity 游戏与 Web 浏览器后端进行交互。该系统还支持高需求功能,例如分块 HTTP 请求、流式 POST/PUT 操作以及对 HTTP 标头和动词的完全控制。 阅读详情

相关推荐

UnityWebRequest.Post 发送和接收Json数据

发送Json数据 using UnityEngine; using UnityEngine.Networking; using System.Collections; public class MyBehavior : MonoBehaviour { void Start() { StartCoroutine(Upload()); } IEnumerator Upload() { WWWForm form = new WWWForm

梦回故里 5497

unity post 请求

unity post请求,小白

qiuyeshishui的博客 1450

28、游戏联网开发全解析:从数据下载到服务器交互

本文详细解析了游戏联网开发中的关键技术,包括基于实时天气数据调整游戏场景、从互联网下载并显示广告牌图像、以及向Web服务器发送游戏数据。通过使用Unity的UnityWebRequest组件,实现了数据下载与解析、图像加载与缓存、以及客户端与服务器的数据交互。文章还总结了相关技术要点,提供了常见问题的解决方案,并探讨了未来游戏联网开发的发展趋势,如低延迟网络、云游戏和虚拟现实等方向。

ii567的博客 113

unity使用HTTP中post方式请求调用接口

unity自带的UnityWebRequest提供了构成 HTTP 请求和处理 HTTP 响应。 构造函数: public UnityWebRequest(); public UnityWebRequest(Uri uri); public UnityWebRequest(string url); public UnityWebRequest(Uri uri, string method); public UnityWebRequest(string url, string method); publ.

u011175163的博客 9126

windows10下 iperf3测试带宽

客户端输入:"iperf3.exe -u -c 服务器IP地址 -b 5g" //客户端给服务器发送udp数据包,最大带宽为5g。客户端输入:“iperf3.exe -c 服务器IP地址 -P 10“//表示客户端10路并行给服务器发送TCP包;上图可知:带宽是15Gbps(这里不知道为什么下面测试的UDP会比这里TCP慢 按道理UDP不可能比TCP慢的5.)3. 验证是否下载成功,在打开的窗口中输入“iperf3.exe -v”,会出现安装的版本,表示安装成功了。5. iperf3参数。

xiaoqixiaoguai的博客 5888

从零开始搭建属于自己的语音识别API服务器(ASRT开源项目)

材料准备 云服务器 (本人使用的的是阿里云服务器 Ubuntu(Linux操作系统)) 环境搭建 1. Python 3.7 话不多说直接上代码 sudo su yum -y install git yum -y install gcc yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-deve

zhi_qian的博客 5647

Unity用UnityWebRequest和 BestHttp的GET和POST表单提交,与php交互

在unity2021中,WWW的资源加载方式过时了,新的方法为UnityWebRequest实际开发过程中,游戏APP通常在连接游戏服务器之前先从web服务器获取GM配置的相关信息,这里模拟服务器和前端的简单交互,用Unity的UnityWebRequest的GET和POST两种方式提交表单,向后端请求数据,后端返回JSON数据,前端根据返回数据执行相关逻辑。......

hack_yin的博客 5731

《大明王朝1566》中,朝廷财政危机无法解决的根源分析

财政困局中的财富最终流向三重黑洞:​皇室挥霍​(如嘉靖炼丹修殿)、特权阶层贪腐​(严党年入百万两盐税)、制度性损耗​(宗室供养、低效官僚)。更深层的“钱”其实是被禁锢在道德化治理的牢笼中——当国家用“黄河长江皆可为用”的权术思维替代制度性改革时,财政危机便成为帝制王朝无法逃脱的宿命。

为了小家奋斗 1967

Unity 使用UnityWebRequest进行Get/Post请求

Unity 使用UnityWebRequest进行Get/Post请求

w091253的博客 2681

BUCK降压电路设计实战:从理论到PCB的完整指南

本文详细介绍了BUCK降压电路的设计实战,从基础原理到PCB布局的完整指南。通过关键部件选型、PCB布局黄金法则和调试技巧,帮助工程师高效设计稳定可靠的开关电源。特别针对电感、MOSFET和电容选型提供实用公式和避坑指南,并分享高温环境下的工程经验与测试方法。

weixin_33744141的博客 449

银河飞腾FT-M6678 DSP开发初体验:从仿真器连接到第一个网络程序(CCS5.5+FT-EMU560实战)

本文详细介绍了银河飞腾FT-M6678 DSP开发环境的搭建过程,包括CCS5.5开发环境的配置、FT-EMU560仿真器的连接与设置,以及关键模块如网络驱动的国产化替换。通过实战案例,帮助开发者快速掌握国产DSP的开发流程,实现网络通信功能。

weixin_30919429的博客 553

Unity UnityWebRequest 学习

kHttpVerbGET

Move_Cat的博客 1218

WOFOST作物模型(7):6.0.6版本的PCSE使用(多层水分平衡和SNOMIN碳氮模型的集成)

wofost81文件结构如上,其中所需的参数可从github上获取然后input下有两个需要调用的功能函数py文件,需要拖到自己的运行py文件同级目录下在使用土壤模块SNOMIN进行作物生长模型模拟时,需要为土壤剖面的不同层次提供多种输入变量。这些变量通常不随年份变化,因此会统一在土壤文件中定义。本节将说明如何将这些输入变量整合到一个字典中,进而生成SNOMIN能够读取的土壤文件。

所有专家都曾始于新手 637

unity实现HTTP请求

unity中UnityWebRequest和WWW都可以实现HTTP请求,下面举例说明两种方法分别实现Get和Post请求 1、UnityWebRequest实现HTTP请求 Get请求 IEnumerator GetRequest(string url) { using (UnityWebRequest webRequest = UnityWebRequest.Get(url))...

少得多惑的博客 1万+

一文搞懂自适应激光控制技术,开启光学新时代

自适应激光控制技术作为现代光学领域的关键技术,以其独特的原理和高效的工作机制,在科研、工业等众多领域展现出了巨大的应用价值。通过对激光波前的实时测量与补偿,它成功克服了激光在传输和应用过程中面临的诸多挑战,显著提升了激光的光束质量和应用效果。在科研领域,它助力天文观测突破大气湍流的限制,让我们得以更清晰地窥探宇宙的奥秘;在激光核聚变研究中,为实现高效的核聚变反应提供了关键支持,为解决能源问题带来了新的希望。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2529

YOLOv11 改进 - 特征融合 | 替换 C3k2 涨点:GELAN 融合 CSP+ELAN 提精度

本文介绍了可编程梯度信息(PGI)和广义高效层聚合网络(GELAN)与 YOLOv11 的结合,以解决深度网络数据传输时的信息丢失问题。PGI 能为目标任务提供完整输入信息,计算目标函数以更新网络权重。GELAN 作为轻量级网络架构,由 SPPELAN、ELAN1、RepNCSPELAN4 等模块组成。我们将 GELAN 代码集成进 YOLOv11, 实验脚本显示,结合 GELAN 的 YOLOv11 在 MS COCO 数据集目标检测任务中或有良好表现。

魔改工程师的博客 1242

Unity Webgl使用GET/POST获取服务器数据,对JSON数据进行解析

类(用于与Web服务器通信,处理HTTP与Web服务器通信流程),在脚本中引用 using UnityEngine.Networking;命名空间即可使用UnityWebRequest类。

why820mmm的博客 2083

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Unity客户端和服务器通信【Unity网络编程(四)】

实现Unity客户端与服务器的通信,包括GET的登录和POST方法的数据发送,介绍了请求的发送过程和区别,并且演示了一下基本的案例

cycler_725的博客 4518

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

unity请求http网络数据方式

private float mJindu = 0; private string mContent; public float getJindu() { return mJindu; } //POST请求(Form表单传值、效率低、安全 ,) IEnumerator POST(string url, Dictionary&amp;amp;lt;string, stri...

weixin_43083022的博客 3342

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

UnityWebRequest类解析

首先你要知道这个类是干嘛的,主要是从服务器或者本地加载AB包的,官方解释为: UnityWebRequest对象用于与web服务器通信。 unitywebre任务处理与web服务器的HTTP通信流。其他对象——特别是下载处理程序和UploadHandler——分别管理下载和上传数据。 为方便起见,提供了一组静态函数;这些返回UnityWebRequest对象为许多常见用例正确配置。看: Get, Post, Put, GetTexture. 注意:当UnityWebRequest通过调用Send方法

qq_40833062的博客 894

Unity + PHP + MySQL连接技术简介

Unity + PHP + MySQL技术路线的简单案例实现

weixin_43822095的博客 1523

Unity 数据传输静态类

在写这篇的时候提到过一个数据传输工具,但是当时是别人的东西,只写了两个例子,这里稍微整理一下,变成一个静态类工具,可以直接和服务器Get、Post、Delete等请求。 还是先讲使用方法: using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoB...

eevee_1的博客 380

Unity 中通过HttpWebRequest POST和GET请求数据

Unity 中通过HttpWebRequest以POST形式传JSON格式(键值对格式)的参数请求数据。 注意:处理HttpWebRequest访问https有安全证书的问题( 请求被中止: 未能创建 SSL/TLS 安全通道。) 只需加上以下两行代码就行了。 ServicePointManager.ServerCertificateValidationCallback += ...

螞蟻的日常 2254

Unity UnityWebRequest 进行Get和Post请求

using System.Collections; using UnityEngine; using UnityEngine.Networking; public class NetWorkHttp : MonoBehaviour { private static NetWorkHttp instance; public static NetWorkHttp Instance { get { if (instance == n

zzzsss123333的博客 2851

简述一下Unity的UnityWebRequest

UnityWebRequest是Unity中处理网络请求的首选工具,提供了灵活、高效的API,支持多种HTTP方法和复杂的网络操作。通过本文的介绍,你应该已经掌握了UnityWebRequest的基本用法和注意事项。在实际项目中,合理使用UnityWebRequest可以帮助你轻松实现与服务器的交互,提升游戏的动态性和互动性。

ZeroBugX的博客 2360

Unity网络请求方式UnityWebRequest

在unity2019中,“WWW"的资源加载方式过时了,新的方法为"UnityWebRequest” 使用方法如下: 1.加载图片资源 using UnityEngine; using UnityEngine.Networking; using System.Collections; public class MyBehaviour : MonoBehaviour { void Start() { StartCoroutine(GetText()); } IEnumerator GetText() {

梦想是世界和平 1万+
上一篇: unity中通过WWW 方式进行POST请求数据
下一篇: Unity 中通过HttpWebRequest POST和GET请求数据
科幻之眼
博客等级 码龄9年 101粉丝 153原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值