UnityAPI_WebRequest——20230922

目录

·作用

·请求

1.get

2.post

·读取图片 

·下载AB包

·下载文件到本地


比www更节约系统性能,传输速度更快

·作用

用于与Web服务器进行同信

·请求

1.get

传输更快

不安全

    void Start()
    {
        StartCoroutine(Get());
    }
    IEnumerator Get()
    {
        UnityWebRequest webRequest = UnityWebRequest.Get("http://www.baidu.com");
        yield return webRequest.SendWebRequest();//开始与远程服务器通信。
        //异常处理,很多博文用了error!=null这是错误的,请看下文其他属性部分
        //isHttpError:UnityWebRequest 接收到指示错误的 HTTP 响应代码后,返回 true。(只读)
        //isNetworkError:UnityWebRequest 遇到系统错误后,返回 true。(只读)
        if (webRequest.isHttpError || webRequest.isNetworkError)
            Debug.Log(webRequest.error);//error:请求或响应时遇到的任何系统错误。(只读)
        else
        {
            Debug.Log(webRequest.downloadHandler.text);//从远程服务器接收的主体数据。
        }
    }

2.post

安全

    void Start()
    {
        StartCoroutine(Post());
    }
    IEnumerator Post()
    {
        WWWForm form = new WWWForm();
        //键值对
        form.AddField("key", "value");
        form.AddField("name", "mafanwei");
        form.AddField("blog", "qwe25878");

        UnityWebRequest webRequest = UnityWebRequest.Post("http://www.baidu.com", form);

        yield return webRequest.SendWebRequest();//开始与远程服务器通信。
        //异常处理,很多博文用了error!=null这是错误的,请看下文其他属性部分
        if (webRequest.isHttpError || webRequest.isNetworkError)
            Debug.Log(webRequest.error);
        else
        {
            Debug.Log(webRequest.downloadHandler.text);
        }
    }

·读取图片 

    public Texture img;
    private void Start()
    {
        //StartCoroutine(LoadTexture("http://127.0.0.1:8099/01.jpg")); 
        //StartCoroutine(LoadTexture("http://127.0.0.1:8099/02.mp4"));
        StartCoroutine(LoadTexture("http://127.0.0.1:8099/01.mp3"));

    }
    IEnumerator LoadTexture(string url)
    {
        using (UnityWebRequest webRequest = UnityWebRequestTexture.GetTexture(url))
        {
            yield return webRequest.SendWebRequest();
            if (webRequest.isHttpError || webRequest.isNetworkError)
            {
                Debug.Log("下载出错" + webRequest.responseCode + "," + webRequest.error);
            }
            else
            {
                //图片赋值 DownloadHandlerTexture:专用于下载要用作 Texture 对象的图像的 DownloadHandler 子类
                img = (webRequest.downloadHandler as DownloadHandlerTexture).texture;
                输出图片的宽
                //Debug.Log((webRequest.downloadHandler as DownloadHandlerTexture).texture.width);
                输出图片的高
                //Debug.Log(DownloadHandlerTexture.GetContent(webRequest).height);
            }
        }
    }
    private void SaveField(Byte[] bytes, string texName, string spriteType)
    {
        File.WriteAllBytes(Application.dataPath + "/" + texName + spriteType, bytes); //直接放在了Assets目录下,存在地址自行修改
    }
    void OnGUI()
    {
        GUI.Label(new Rect(10, 10, 500, 500), img);//绘制纹理
    }

    private void SaveLocally(Texture2D texture2D, string texName, string spriteType)
    {
        Byte[] bytes = texture2D.EncodeToPNG();
        File.WriteAllBytes(Application.dataPath + "/" + texName + spriteType, bytes); //直接放在了Assets目录下,存在地址自行修改
    }

·下载AB包

    IEnumerator LoadAB(string url)
    {
        using (UnityWebRequest req = UnityWebRequestAssetBundle.GetAssetBundle(url))
        {
            yield return req.SendWebRequest();
            if (req.error == null)
            {
                Debug.Log((req.downloadHandler as DownloadHandlerAssetBundle).assetBundle.name);
                Debug.Log(DownloadHandlerAssetBundle.GetContent(req).name);
            }
            else
            {
                Debug.Log("下载出错" + req.responseCode + "," + req.error);
            }
        }
    }

·下载文件到本地

    private void Start()
    {
        //StartCoroutine(LoadTexture("http://127.0.0.1:8099/01.jpg")); 
        //StartCoroutine(LoadTexture("http://127.0.0.1:8099/02.mp4"));
        StartCoroutine(LoadTexture("http://127.0.0.1:8099/01.mp3"));

    }
    IEnumerator LoadTexture(string url)
    {
        using (UnityWebRequest webRequest = UnityWebRequest.Get(url))
        {
            yield return webRequest.SendWebRequest();
            if (webRequest.isHttpError || webRequest.isNetworkError)
            {
                Debug.Log("下载出错" + webRequest.responseCode + "," + webRequest.error);
            }
            else
            {
                SaveField(webRequest.downloadHandler.data, "视频", ".mp4");
            }
        }
    }
    /// <summary>
    /// 保存文件方法
    /// </summary>
    /// <param name="bytes"></param>
    /// <param name="texName">保存文件的名字</param>
    /// <param name="spriteType">保存文件的类型</param>
    private void SaveField(Byte[] bytes, string texName, string spriteType)
    {
        //直接放在了Assets目录下,存在地址自行修改
        File.WriteAllBytes(Application.dataPath + "/" + texName + spriteType, bytes);
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值