UniRX网络请求 Http篇 get post
前言:unity高版本之后UniRX对于ObservableWWW已经弃用
在网上搜索了一下 结果一个老外具体叫什么忘记了 自己重新对UnityWebRequest封装了一份ObservableWebRequest
具体封装脚本:
这个脚本之前只支持Post以字典方式请求,自己又改了一下 支持Post Json格式请求
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using UniRx;
using UnityEngine;
using UnityEngine.Networking;
#if !UniRxLibrary
using ObservableUnity = UniRx.Observable;
#endif
namespace UniRx.WebRequest
{
public static class ObservableWebRequest
{
public static IObservable<UnityWebRequest> ToRequestObservable(this UnityWebRequest request, IProgress<float> progress = null)
{
return ObservableUnity.FromCoroutine<UnityWebRequest>((observer, cancellation) => Fetch(request, null, observer, progress, cancellation));
}
public static IObservable<string> ToObservable(this UnityWebRequest request, IProgress<float> progress = null)
{
return ObservableUnity.FromCoroutine<string>((observer, cancellation) => FetchText(request, null, observer, progress, cancellation));
}
public static IObservable<byte[]> ToBytesObservable(this UnityWebRequest request, IProgress<float> progress = null)
{
return ObservableUnity.FromCoroutine<byte[]>((observer, cancellation) => Fetch(request, null, observer, progress, cancellation));
}
public static IObservable<string> Get(string url, IDictionary<string, string> headers = null, IProgress<float> progress = null)
{
return
ObservableUnity.FromCoroutine<string>(
(observer, cancellation) =>
FetchText(UnityWebRequest.Get(url), headers, observer, progress, cancellation));
}
public static IObservable<byte[]> GetAndGetBytes(string url, IDictionary<string, string> headers = null, IProgress<float> progress = null)
{
return ObservableUnity.FromCoroutine<byte[]>((observer, cancellation) => FetchBytes(UnityWebRequest.Get(url), headers, observer, progress, cancellation));
}
public static IObservable<UnityWebRequest> GetRequest(string url, IDictionary<string, string> headers = null, IProgress<float> progress = null)
{
return ObservableUnity.FromCoroutine<UnityWebRequest>((observer, cancellation) => Fetch(UnityWebRequest.Get(url), headers, observer, progress, cancellation));
}
public static IObservable<string> Post(string url, Dictionary<string,