先上接口

using System;
using System.Collections.Generic;
using UnityEngine;namespace YDB.Http
{public interface IHttp{/// <summary>/// Get/// </summary>/// <param name="callback">回调</param>/// <param name="url">地址</param>void Get(Action<string> callback,string url);/// <summary>/// Get/// </summary>/// <param name="callback">回调</param>/// <param name="url">地址</param>void Get(Action<byte[]> callback, string url);/// <summary>/// Get/// </summary>/// <param name="callback">回调</param>/// <param name="url">地址</param>void Get(Action<Texture> callback, string url);/// <summary>/// Post/// </summary>/// <param name="parameters">参数</param>/// <param name="url">地址</param>void Post(Dictionary<string, string> parameters, string url);}
}

接口具体实现

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;namespace YDB.Http
{public class Http : MonoBehaviour,IHttp{public void Get(Action<string> callback, string url){if(callback == null){Debug.LogWarning("回调为空,请求了也没屁用");}UnityWebRequest unityWebRequest = UnityWebRequest.Get(url);StartCoroutine(StartGet(callback,unityWebRequest));}public void Get(Action<byte[]> callback, string url){if (callback == null){Debug.LogWarning("回调为空,请求了也没屁用");}UnityWebRequest unityWebRequest = UnityWebRequest.Get(url);StartCoroutine(StartGet(callback, unityWebRequest));}public void Get(Action<Texture> callback, string url){if (callback == null){Debug.LogWarning("回调为空,请求了也没屁用");}UnityWebRequest unityWebRequest = UnityWebRequest.Get(url);DownloadHandlerTexture downloadHandler = new DownloadHandlerTexture();unityWebRequest.downloadHandler = downloadHandler;StartCoroutine(StartGet(callback, unityWebRequest));}public void Post(Dictionary<string, string> parameters, string url){UnityWebRequest unityWebRequest = UnityWebRequest.Post(url, parameters);StartCoroutine(StartPost(unityWebRequest));}private IEnumerator StartPost(UnityWebRequest uwr){yield return uwr.SendWebRequest();if (uwr.isHttpError || uwr.isNetworkError){Debug.LogError(uwr.error);}else{Debug.Log("Post请求成功");}}/// <summary>/// 异步网络请求/// </summary>/// <typeparam name="T">回调类型</typeparam>/// <param name="callback">回调</param>/// <param name="uwr">请求参数</param>/// <returns></returns>private IEnumerator StartGet<T>(Action<T> callback, UnityWebRequest uwr) where T : class{yield return uwr.SendWebRequest();if (uwr.isHttpError || uwr.isNetworkError){Debug.LogError(uwr.error);}else{Debug.Log("Get请求成功");Type type = typeof(T);if (type == typeof(string)){string text = uwr.downloadHandler.text;callback(text as T);}else if (type == typeof(byte[])){byte[] packet = uwr.downloadHandler.data;callback(packet as T);}else if (type == typeof(Texture)){//特殊的文件类型,通过不同的Handler来下载DownloadHandlerTexture downloadHandler = uwr.downloadHandler as DownloadHandlerTexture;Texture texture = downloadHandler.texture;callback(texture as T);}}}}
}

Unity3D:HTTP请求模块相关推荐

  1. vue-resource网络请求模块(安装教程) - cmd篇

    vue-resource网络请求模块(安装教程) - cmd篇 安装vue-resource 网络请求模块,用于依赖后端服务器的vuejs项目进行对服务器端数据的请求或跨域请求. cmd安装步骤: 先 ...

  2. network/request.js网络请求模块封装

    网络请求模块封装 import axios from "axios"; //引入axios模块export function request(config) {//1,创建axio ...

  3. Vue学习笔记之18-网络请求模块的封装

    常见的网络请求模块, 以及它们的优缺点对比 传统Ajax请求 缺点: 配置和调用方式等非常混乱 真实开发中真的很少直接使用, 而是使用Jquery-Ajax Jquery-ajax 相对于传统的Aja ...

  4. Python爬虫学习笔记-第二课(网络请求模块上)

    网络请求模块上 1. 相关概念介绍 1.1 向网站发起请求的方式: 1.2 url-全球统一资源定位符 1.3 User-Agent 用户代理 1.4 referer 1.5 状态码 1.6 抓包工具 ...

  5. 一木.溪桥学爬虫-03:请求模块urllib、 urllib.request、urllib.parse.urlencode、urllib.parse.quote(str)、.unquote()

    一木.溪桥 在Logic Education跟Jerry学爬虫 07期:Python 爬虫 一木.溪桥学爬虫-03:请求模块urllib. urllib.request.urllib.parse.ur ...

  6. Python爬虫01—请求模块

    请求模块 一.基本概念 1.请求方法 1.1 GET 1.2 POST 2.Refer 3.状态码 二.获取图片 1.requests模块 2.request模块 三.获取网页源码 urllib.re ...

  7. 搭建前端网络请求模块

    HTTP 超文本传输协议 发送一个请求查询用户日志记录 请求 响应 请求方式有哪些? 响应码有哪些? 客户端请求后,服务器响应携带的 https 证书 常用加密算法 快速搭建 Vue 普通 H5 项目 ...

  8. Python爬虫学习笔记-第三课(网络请求模块下)

    网络请求模块下 1. urllib-get案例 1.1 代码需求:爬取贴吧数据 1.2 代码思路 1.3 代码实现 2. urllib-post案例 3. requests模块简介 3.1 get案例 ...

  9. 【python爬虫学习篇】请求模块urllib3

    目录 1.urllib3 1.1,发送网络请求 1.1.2,GET请求 1.1.3,POST请求 1.1.4,重试请求和处理响应内容 1.1.5,JSON信息 1.2,复杂请求的发送 1.2.1,设置 ...

  10. python实现get请求 模块_python爬虫 基于requests模块发起ajax的get请求实现解析

    基于requests模块发起ajax的get请求 需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情数据 用抓包工具捉取 使用ajax加载页面的请求 鼠标往下 ...

最新文章

  1. [android] 从gallery获取图片
  2. C#数组按值和按引用传递数组区别
  3. NIO详解(四):NIO编程
  4. 做俯卧撑的10个技巧
  5. [pymongo] pymongo.errors.CursorNotFound Exception
  6. [Java基础]反射获取成员方法并使用
  7. jquery官网打不开难以下载,不妨试试webjars
  8. 穷人为什么会越穷,穷的时候以下三个事情不能干
  9. dedecms 模型新添加的自定义字段设置样式
  10. c语言在线测试题,C语言测试题
  11. ansible一键部署rsync服务剧本
  12. servlet 单例问题
  13. 系统设计-HIPO图
  14. 常用URLscheme整理+不同场景下打开URLscheme的方法
  15. php模板开发教程,discuz模板开发教程系列教程整理
  16. matlab 切点投资组合 程序,MATLAB证券投资组合分析
  17. linux dd 克隆很慢,使用dd命令进行SD卡克隆
  18. 资深老狐一句感叹:白学了,猫猫究竟有什么魔力,一小时等于十年功?
  19. Linux服务详解(主要基于RedHat系的及Centos默认服务详解)(综合整理)
  20. 【ARM嵌入式】实验报告一 熟悉RealView MDK集成开发环境的使用

热门文章

  1. jsp+servlet+mysql 学生选课系统
  2. c++win32项目 如何显示后再删除一个绘图_sai绘图软件中文版
  3. c语言餐厅饭卡管理系统,饭卡管理系统
  4. stm32f103c8t6单片机驱动台达伺服电机
  5. 2018 Multi-University Training Contest 10 hdu 6432 Problem G. Cyclic(oeis题)
  6. linux下socket调试,linux下socket调试
  7. WooCommerce税收入门指南,第2部分
  8. matlab最优化工具箱下载,matlab emd工具箱下载
  9. visio图形包解压
  10. 用户故事与敏捷方法笔记---Scrum与用户故事