unity 微信开发小游戏,网络资源获取数据

1.创建数据结构

cs 复制代码
public class JsCode
{
    public string js_code;
}

public class OpenID
{
    public string openid;
}

2.网络请求

cs 复制代码
using System;
using System.Collections;
using System.Text;
using UnityEngine;
using UnityEngine.Networking;

public class HttpManager : MonoBehaviour
{
    public static HttpManager instance;

    private void Awake()
    {
        if (instance == null)
        {
            instance = this;
        }
        else
        {
            Destroy(this);
        }
    }

    /// <summary>
    /// 请求数据
    /// </summary>
    /// <typeparam name="Treq">请求数据类型</typeparam>
    /// <typeparam name="Tres">接收数据类型<</typeparam>
    /// <param name="url">请求地址</param>
    /// <param name="req">请求数据</param>
    /// <param name="callback">回显</param>
    public void GetData<Treq, Tres>(string url, Treq req, Action<Tres> callback) where Treq : class where Tres : class
    {
        StartCoroutine(LoadData<Treq, Tres>(url, req, callback));
    }
    /// <summary>
    /// 请求数据
    /// </summary>
    /// <typeparam name="Treq">请求数据类型</typeparam>
    /// <typeparam name="Tres">接收数据类型</typeparam>
    /// <param name="url">请求地址</param>
    /// <param name="req">请求数据</param>
    /// <param name="callback">回显</param>
    /// <returns></returns>
    IEnumerator LoadData<Treq, Tres>(string url, Treq req, Action<Tres> callback) where Treq : class where Tres : class
    {
        string json = JsonUtility.ToJson(req);
        //创建一个UnityWebRequest对象,这里以POST方法为例
        using (UnityWebRequest request = new UnityWebRequest(url, "POST"))
        {
            //创建一个UploadHandlerRaw对象,并设置内容类型

            Debug.Log("请求地址:" + url);
            Debug.Log("请求json:" + json);
            request.uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(json));
            //为请求分配 DownloadHandlerBuffer,用于存储下载数据
            request.downloadHandler = new DownloadHandlerBuffer();
            //设置请求头
            request.SetRequestHeader("content-type", "application/json;charset=utf-8");
            //签名验证采用Bearer Token认证方式
            //request.SetRequestHeader("Authorization", "Bearer YOUR_ACCESS_TOKEN");
            //发送网络请求并等待完成
            yield return request.SendWebRequest();
            //网络有响应并且成功了
            if (request.isDone && request.result == UnityWebRequest.Result.Success)
            {
                Debug.Log("请求数据:" + request.downloadHandler.text);
                Tres res = JsonUtility.FromJson<Tres>(request.downloadHandler.text);
                callback?.Invoke(res);
            }
            else
            {
                Debug.Log("网络请求失败: " + request.error);
                callback?.Invoke(null);
            }

        }

    }


}

3.运用

cs 复制代码
//成功获取到用户Code
JsCode msg = new JsCode();
msg.js_code = e.code;

HttpManager.instance.GetData<JsCode, OpenID>(WXCodeUrl, msg, (res) => {
    Debug.Log("整体接收:" + res);
    Debug.Log("openid:" + res.openid);
    WXOpenID = res.openid;

});
相关推荐
Yasin Chen2 小时前
Unity TMP_SDF 分析(五)片元着色器
unity·游戏引擎·着色器
mxwin4 小时前
Unity Shader Texture Bombing用随机旋转与偏移的多次采样,打破大地形纹理的
unity·游戏引擎
代数狂人4 小时前
《深入浅出Godot 4与C# 3D游戏开发》第二章:编辑器导航
3d·编辑器·游戏引擎·godot
zcc8580797624 小时前
Unity MVVM UniTask + 轻量级 ReactiveProperty
unity
zcc8580797625 小时前
Unity 自动生成UI绑定+MVVM 架构模板
unity
LF男男7 小时前
MK - Grand Mahjong Game-
unity·c#
呆呆敲代码的小Y7 小时前
【Unity实战篇】| YooAsset + UOS CDN 云服务资源部署,实现正式热更流程
人工智能·游戏·unity·游戏引擎·免费游戏
WarPigs7 小时前
unity多语言框架
unity
代数狂人7 小时前
《深入浅出Godot 4与C# 3D游戏开发》第一章:了解Godot与搭建开发环境
c#·游戏引擎·godot