Unity GameFrameWork-WebRequest

提供使用短连接的功能,可以用 Get 或者 Post 方法向服务器发送请求并获取响应数据,可指定允许几个 Web 请求器进行同时请求。

API

在这里插入图片描述

WebRequest组件用于发起短链接的请求,包括Get、Post,以上几个不同的AddWebRequest函数是用于在发生数据的时候附上post数据、Form表单数据,这个看参数名就知道了。至于userData,当然是自定义的数据,在请求成功或失败时可以获取这个自定义数据。

具体使用

配合Event来使用,用之前先订阅,用之后要取消订阅。
在这里插入图片描述在这里插入图片描述

可以在比如onAwake里面绑定
public void TestWebResult()
{
    GameEntry.Event.Subscribe(UnityGameFramework.Runtime.WebRequestSuccessEventArgs.EventId,OnWebRequestSuccess);
    GameEntry.Event.Subscribe(UnityGameFramework.Runtime.WebRequestFailureEventArgs.EventId,OnWebRequestFailure);
    //get请求    調用 
    GameEntry.WebRequest.AddWebRequest("http://www.baidu.com",this);
}

取消绑定
void OnDestroy()
{
    GameEntry.Event.Unsubscribe(UnityGameFramework.Runtime.WebRequestSuccessEventArgs.EventId,OnWebRequestSuccess);
    GameEntry.Event.Unsubscribe(UnityGameFramework.Runtime.WebRequestFailureEventArgs.EventId,OnWebRequestFailure);
}

成功和失败的回调,具体逻辑根据业务来实现
private void OnWebRequestSuccess(object sender, GameFrameworkEventArgs eventArgs)
{
    // var e = (WebRequestSuccessEventArgs)eventArgs;            
    WebRequestSuccessEventArgs ne = (WebRequestSuccessEventArgs)eventArgs;
    //获取回应的数据
    string responseJson = Utility.Converter.GetString(ne.GetWebResponseBytes());
    Debug.Log("responseJson: "+responseJson);
    Debug.Log("load-----------OnWebRequestSuccess"+ne.UserData);
}

private void OnWebRequestFailure(object sender, GameFrameworkEventArgs eventArgs)
{
    var e = (WebRequestFailureEventArgs)eventArgs;
    Debug.Log("请求失败"+e.ErrorMessage);
}

ps.如果是post请求,主题流程不变,只是传递的参数不一样。

在unity中结合控件使用

主逻辑

订阅事件前面已经说过,下面测试一下图片和文本
//请求图片
public void requestImage()
{
    VerifyModelSingleton.Instance.curWebType = 1;
    sendWebRequest();
}
//请求txt文件
public void requestTxt()
{
    VerifyModelSingleton.Instance.curWebType = 2;
    sendWebRequest();
}
//封装一个统一的请求接口
private void sendWebRequest()
{
    string url = VerifyModelSingleton.Instance.webLoadUrl;
    webPrefixName = url.Split('/').Last();
    Debug.Log("prefix=========="+webPrefixName);
    Debug.Log("sendWebRequest------"+url);
    GameEntry.WebRequest.AddWebRequest(url,this);
}

下面主要是成功的逻辑

private void OnWebRequestSuccess(object sender, GameFrameworkEventArgs eventArgs)
{        
    //引入了一个参数来区分是图片还是txt文件 做不通的处理
    UnityGameFramework.Runtime.WebRequestSuccessEventArgs ne = (UnityGameFramework.Runtime.WebRequestSuccessEventArgs)eventArgs;
    //获取回应的数据
    string responseJson = Utility.Converter.GetString(ne.GetWebResponseBytes());
    if(VerifyModelSingleton.Instance.curWebType == 1) //图片
    {
        Texture2D texture = new Texture2D(10, 10);
        texture.LoadImage(ne.GetWebResponseBytes());//流数据转换成Texture2D
        //这里使用的是rawimage
        urlImage.texture = texture;
    }
    else if(VerifyModelSingleton.Instance.curWebType == 2) //txt
    {
        //就是个text显示
        contentTxt.text = responseJson;
    }
    Debug.Log("responseJson: "+responseJson);
    Debug.Log("load-----------OnWebRequestSuccess"+ne.UserData);
}

ui界面大概是这个样子

在这里插入图片描述

rawimage

在这里插入图片描述

txt

在这里插入图片描述
欢迎大家交流,有不妥之处,还请指正,谢谢。
ps:欢迎大家进q群交流游戏开发的问题(632313288)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值