Unity http请求封装(www)
来源:互联网 发布:sqlserver 数据挖掘 编辑:程序博客网 时间:2024/06/04 00:27
项目中需要经常访问后台,以任何需求都只写一遍代码的想法决定对www进行一下封装,目的即是让程序在每个访问后台的入口保持唯一,同时可以自己定制回调函数,处理每一个访问http请求:
首先看了其他网友的文章,访问www方法如下:
WWW __request = new WWW(__url);
yield return __request;if(string.IsNullOrEmpty(__request.error)){ //doing something}else{ //doing something}
首先我希望访问http方法要是单例,但是如果用协程的方法(yield)必须要继承MonoBehaviour,所以先写一个继承MonoBehaviour的单例
public class _InstanceMonoBehaviour<T> : MonoBehaviour where T : MonoBehaviour
...然后写一个访问http的单例类
//// HttpTool.cs// EndlessRunner//// Created by jiabl on 09/06/2017.////using System.Collections;using System.Collections.Generic;using UnityEngine;public delegate void HttpRequestEventHandle(string __request);/// <summary>/// Http tool./// 当需要请求http的时候调用Request方法/// 例子:/// HttpTool.Instance.Request("www.baidu.com",new HttpRequestEventHandle(myfunc))/// void myfunc(string str) {do something]/// </summary>public class HttpTool : _InstanceMonoBehaviour<HttpTool> {/// <summary>/// http请求/// </summary>/// <param name="url">URL.</param>/// <param name="fa">Fa.</param>/// public void Request(string __url,HttpRequestEventHandle __eventHandle){StartCoroutine(httpRequest(__url,__eventHandle));}/// <summary>/// Request the specified __url, __eventHandleForComplete and __eventHandleForError./// </summary>/// <param name="__url">URL.</param>/// <param name="__eventHandleForComplete">Event handle for complete.</param>/// <param name="__eventHandleForError">Event handle for error.</param>public void Request(string __url,HttpRequestEventHandle __eventHandleForComplete,HttpRequestEventHandle __eventHandleForError){StartCoroutine(httpRequest(__url,__eventHandleForComplete,__eventHandleForError));}/// <summary>/// Https the request./// </summary>/// <returns>The request.</returns>/// <param name="url">URL.</param>public IEnumerator httpRequest(string __url,HttpRequestEventHandle __eventHandle){WWW __request = new WWW(__url);yield return __request;if(string.IsNullOrEmpty(__request.error)){onHttpRequestCompleted(__request.text,__eventHandle);}else{Debug.Log("<====== http request error! =======> info: url=>"+__url+" request error: "+__request.error);}}/// <summary>/// Https the request./// </summary>/// <returns>The request.</returns>/// <param name="__url">URL.</param>/// <param name="__eventHandleForComplete">Event handle for complete.</param>/// <param name="__eventHandleForError">Event handle for error.</param>public IEnumerator httpRequest(string __url,HttpRequestEventHandle __eventHandleForComplete,HttpRequestEventHandle __eventHandleForError){WWW __request = new WWW(__url);yield return __request;if(string.IsNullOrEmpty(__request.error)){onHttpRequestCompleted(__request.text,__eventHandleForComplete);}else{onHttpRequestFailed(__request.text,__eventHandleForError);Debug.Log("<====== http request error! =======> info: url=>"+__url+" request error: "+__request.error);}}/// <summary>/// http请求后的回调方法./// </summary>/// <param name="__requestText">Request text.</param>/// <param name="__eventHandle">Event handle.</param>private void onHttpRequestCompleted(string __requestText,HttpRequestEventHandle __eventHandle){__eventHandle(__requestText);}/// <summary>/// http请求失败的回调方法/// </summary>/// <param name="__requestText">Request text.</param>/// <param name="__eventHandle">Event handle.</param>private void onHttpRequestFailed(string __requestText,HttpRequestEventHandle __eventHandle){__eventHandle(__requestText);}}
调用方法如下:
HttpTool.Instance.Request("https://www.baidu.com",new HttpRequestEventHandle(requestEventForPromotion));//void requestEventForPromotion(string resquest){//Dictionary<string, object> response = (Dictionary<string, object>)Json.Deserialize(resquest);////if (response.ContainsKey("img"))//{//WWW imgRequest = new WWW((string)response["img"]);//// do something...//}//}
阅读全文
0 0
- Unity http请求封装(www)
- Unity-WWW发送Http请求
- Unity WWW强力封装
- Unity中的WWW网络请求
- Unity Post 请求 非 www
- 微信小程序-封装http请求(ajax)
- Android封装Http请求
- Block封装http请求
- http请求封装
- 简单封装 HTTP 请求
- go http 请求封装
- http请求方法封装
- http封装ajax请求
- Unity 3D www 请求 集成
- Unity利用WWW http传输Json数据
- Java HTTP请求类封装
- Android Http网络请求封装
- Android中封装Http请求
- ubuntu16.04 ram Kylin 4.0-2SP1 更新源
- Ubuntu,Windows双系统安装注意要点
- vagrant 快速入门
- java 多线程中的sleep()与wait()方法的对比
- GLSL语言基础
- Unity http请求封装(www)
- 接口
- js中使字符串首字母大写采用的姿势
- 通过代理实现Java代码访问指定URL
- 计算机10大基础知识点(一)
- 代码整洁_错误处理
- 洛谷 P1876 开灯
- 位移运算、junit、数据的源码,补码和反码
- ssh整合