using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking; public class C_UnityWebRequest : MonoBehaviour
{
static C_UnityWebRequest instance;
public static C_UnityWebRequest Instance
{
get
{
if (instance == null)
{
GameObject mounter = new GameObject("C_UnityWebRequest");
instance = mounter.AddComponent<C_UnityWebRequest>();
}
return instance;
}
} /// <summary>
/// get请求
/// </summary>
/// <param name="url"></param>
/// <param name="actionResult"></param>
public void Get(string url, Action<UnityWebRequest> actionResult)
{
StartCoroutine(_Get(url, actionResult));
} /// <summary>
/// 下载文件
/// </summary>
/// <param name="url"></param>
/// <param name="downloadFilePathAndName"></param>
/// <param name="actionResult"></param>
public void DownloadFile(string url, string downloadFilePathAndName, Action<UnityWebRequest> actionResult)
{
StartCoroutine(_DownloadFile(url, downloadFilePathAndName, actionResult));
} /// <summary>
/// 请求图片
/// </summary>
/// <param name="url"></param>
/// <param name="actionResult"></param>
public void GetTexture(string url, Action<Texture2D> actionResult)
{
StartCoroutine(_GetTexture(url, actionResult));
} /// <summary>
/// 请求assetBuddle
/// </summary>
/// <param name="url"></param>
/// <param name="actionResult"></param>
public void GetAssetBundle(string url, Action<AssetBundle> actionResult)
{
StartCoroutine(_GetAssetBundle(url, actionResult));
} /// <summary>
/// 下载音效
/// </summary>
/// <param name="url"></param>
/// <param name="actionResult"></param>
/// <param name="audioType"></param>
public void GetAudioClip(string url, Action<AudioClip> actionResult, AudioType audioType = AudioType.WAV)
{
StartCoroutine(_GetAudioClip(url, actionResult, audioType));
} /// <summary>
/// post form
/// </summary>
/// <param name="serverURL"></param>
/// <param name="lstformData"></param>
/// <param name="actionResult"></param>
public void Post(string serverURL, List<IMultipartFormSection> lstformData, Action<UnityWebRequest> actionResult)
{
//List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
//formData.Add(new MultipartFormDataSection("field1=foo&field2=bar"));
//formData.Add(new MultipartFormFileSection("my file data", "myfile.txt"));
StartCoroutine(_Post(serverURL, lstformData, actionResult));
} /// <summary>
/// put方法
/// </summary>
/// <param name="url"></param>
/// <param name="contentBytes"></param>
/// <param name="actionResult"></param>
public void UploadByPut(string url, byte[] contentBytes, Action<bool> actionResult)
{
StartCoroutine(_UploadByPut(url, contentBytes, actionResult, ""));
} /// <summary>
/// get
/// </summary>
/// <param name="url"></param>
/// <param name="actionResult"></param>
/// <returns></returns>
IEnumerator _Get(string url, Action<UnityWebRequest> actionResult)
{
using (UnityWebRequest uwr = UnityWebRequest.Get(url))
{
yield return uwr.SendWebRequest();
if (actionResult != null)
{
actionResult(uwr);
}
}
} /// <summary>
/// 下载文件
/// </summary>
/// <param name="url"></param>
/// <param name="downloadFilePathAndName"></param>
/// <param name="actionResult"></param>
/// <returns></returns>
IEnumerator _DownloadFile(string url, string downloadFilePathAndName, Action<UnityWebRequest> actionResult)
{
var uwr = new UnityWebRequest(url, UnityWebRequest.kHttpVerbGET);
uwr.downloadHandler = new DownloadHandlerFile(downloadFilePathAndName);
yield return uwr.SendWebRequest();
if (actionResult != null)
{
actionResult(uwr);
}
} /// <summary>
/// 下载图片
/// </summary>
/// <param name="url"></param>
/// <param name="actionResult"></param>
/// <returns></returns>
IEnumerator _GetTexture(string url, Action<Texture2D> actionResult)
{
UnityWebRequest uwr = new UnityWebRequest(url);
DownloadHandlerTexture downloadTexture = new DownloadHandlerTexture(true);
uwr.downloadHandler = downloadTexture;
yield return uwr.SendWebRequest();
Texture2D t = null;
if (!(uwr.isNetworkError || uwr.isHttpError))
{
t = downloadTexture.texture;
}
if (actionResult != null)
{
actionResult(t);
}
} /// <summary>
/// 下载AssetBuddle
/// </summary>
/// <param name="url"></param>
/// <param name="actionResult"></param>
/// <returns></returns>
IEnumerator _GetAssetBundle(string url, Action<AssetBundle> actionResult)
{
UnityWebRequest www = new UnityWebRequest(url);
DownloadHandlerAssetBundle handler = new DownloadHandlerAssetBundle(www.url, uint.MaxValue);
www.downloadHandler = handler; yield return www.SendWebRequest(); AssetBundle bundle = null; if (!(www.isNetworkError || www.isHttpError))
{
bundle = handler.assetBundle;
} if (actionResult != null)
{
actionResult(bundle);
}
} /// <summary>
/// 下载音效
/// </summary>
/// <param name="url"></param>
/// <param name="actionResult"></param>
/// <param name="audioType"></param>
/// <returns></returns>
IEnumerator _GetAudioClip(string url, Action<AudioClip> actionResult, AudioType audioType = AudioType.WAV)
{
using (var uwr = UnityWebRequestMultimedia.GetAudioClip(url, audioType))
{
yield return uwr.SendWebRequest(); if (!(uwr.isNetworkError || uwr.isHttpError))
{
if (actionResult != null)
{
actionResult(DownloadHandlerAudioClip.GetContent(uwr));
}
}
}
} /// <summary>
/// 表单下载
/// </summary>
/// <param name="serverURL"></param>
/// <param name="lstformData"></param>
/// <param name="actionResult"></param>
/// <returns></returns>
IEnumerator _Post(string serverURL, List<IMultipartFormSection> lstformData, Action<UnityWebRequest> actionResult)
{
//List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
//formData.Add(new MultipartFormDataSection("field1=foo&field2=bar"));
//formData.Add(new MultipartFormFileSection("my file data", "myfile.txt"));
UnityWebRequest uwr = UnityWebRequest.Post(serverURL, lstformData); yield return uwr.SendWebRequest(); if (actionResult != null)
{
actionResult(uwr);
}
} /// <summary>
/// put
/// </summary>
/// <param name="url"></param>
/// <param name="contentBytes"></param>
/// <param name="actionResult"></param>
/// <param name="contentType"></param>
/// <returns></returns>
IEnumerator _UploadByPut(string url, byte[] contentBytes, Action<bool> actionResult, string contentType = "application/octet-stream")
{
UnityWebRequest uwr = new UnityWebRequest();
UploadHandler uploader = new UploadHandlerRaw(contentBytes);
// Sends header: "Content-Type: custom/content-type";
uploader.contentType = contentType;
uwr.uploadHandler = uploader; yield return uwr.SendWebRequest(); bool res = true;
if (uwr.isNetworkError || uwr.isHttpError)
{
res = false;
} if (actionResult != null)
{
actionResult(res);
}
}
}

ZT:https://www.jianshu.com/p/3da9191f82a0

UnityWebRequest_ZT的更多相关文章

随机推荐

  1. RocketMQ学习 -> NameServer路由中心

    RocketMQ项目代码核心目录说明 broker:broker启动进程 client:消息客户端,包含消息生产者,消息消费者相关类 common:公共包 dev:开发者信息(非源代码) distri ...

  2. Angular 开发NPM第三方包

    步骤: 创建第三方包 > 开发第三方包 > 测试第三方包 > 发布第三方包 > 使用第三方包 实例: 第一步:创建第三方包;; (创建项目,项目下创建第三方库) 1. 新建项目 ...

  3. Eclipse利用Maven快速上手搭建MyBatis

    一.what is maven? Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件. Maven 除了以程序构建能力为特色之外,还提供高级项目管理 ...

  4. Win10 安装配置 MongoDB 4.0 踩坑记

    redis 官方没有 Windows 版的,微软维护的已经好久没更新了,所以就在想着换成 MongoDB. 于是一趟被我复杂化的踩坑之旅就开始了,同时也记录一下,避免有人遇见跟我一样的问题. 首先在  ...

  5. Python celery和Redis入门安装使用(排难帖)

    1.redis安装 下载地址 https://github.com/MicrosoftArchive/redis/releases,选择Redis-x64-3.2.100.msi5.8 MB下载就好了 ...

  6. 记录一次redis cpu异常升高的排插思路

    好久没有写博客  现在重新捡起来  记录工作中遇到的问题  方便以后在遇到类似的问题也有一个参考. 背景:有一天生产服务器redis  cpu 频繁报警    单核cpu 所以在想是不是业务量上来了. ...

  7. java架构之路-(面试篇)Mysql面试大全

    说一下mysql比较宏观的面试,具体咋写sql的这里就不过多举例了.后面我还会给出一个关于mysql面试优化的试题,这里主要说的索引和B+Tree结构,很少提到我们的集群配置优化方案. 1.索引是什么 ...

  8. C++学习笔记二、头文件与源文件

    头文件 .h 与源文件 .ccp 的区别 .h 文件一般是用来定义的,比如定义函数.类.结构体等: .cpp 文件则是对头文件的定义进行实现. include .h文件,可以调用你声明的函数.类等.当 ...

  9. spring和springmvc的基础知识点

    1.spring中使用@Service("userservice")如何在其他地方引用这个service? (1)getBean("userservice") ...

  10. mac上git安装与github基本使用

    目录 安装git 创建ssh key.配置git 提交本地项目到GitHub 一.安装Git MAC安装Git 首先查看电脑是否安装Git,终端输入: git 1.通过homebrew安装Git 1. ...