//网络请求处理
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
namespace KOL
{
public class WebRequestHandler : MonoBehaviour
{
public static string cookie;
public static IEnumerator PostRequest(string url, string data, Action<string,long> callBack)
{
using (UnityWebRequest www = UnityWebRequest.Put(url, data))
{
www.SetRequestHeader("Content-Type", "application/json;charset=UTF-8");
//www.SetRequestHeader("Authorization", "Bearer " + token);
www.method = UnityWebRequest.kHttpVerbPOST;
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
callBack?.Invoke(www.error, www.responseCode);
}
else
{
if (url.Contains("login") || url.Contains("register"))
{
yield return cookie = www.GetResponseHeader("Set-Cookie");
}
//foreach (var item in www.GetResponseHeaders())
//{
// Debug.Log(item.Key+":"+ item.Value);
//}
callBack?.Invoke(www.downloadHandler.text, www.responseCode);
}
}
}
public static IEnumerator PostRequest(string url, WWWForm data, Action<string,long> callBack)
{
using (UnityWebRequest www = UnityWebRequest.Post(url, data))
{
//www.SetRequestHeader("Content-Type", "application/octet-stream;charset=UTF-8");
//www.SetRequestHeader("Authorization", "Bearer " + token);
Debug.Log(cookie);
if (!string.IsNullOrEmpty(cookie))
{
www.SetRequestHeader("Cookie", cookie);
}
//www.method = UnityWebRequest.kHttpVerbPOST;
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
callBack?.Invoke(www.error, www.responseCode);
}
else
{
//cookie = www.GetResponseHeader("Set-Cookie");
callBack?.Invoke(www.downloadHandler.text, www.responseCode);
}
}
}
/// <summary>
/// Get請求數據
/// </summary>
/// <param name="uri"></param>
/// <param name="callBack"></param>
/// <returns></returns>
public static IEnumerator GetRequest(string uri, Action<string,long> callBack)
{
using (UnityWebRequest webRequest = UnityWebRequest.Get(uri))
{
//Debug.Log("cookie:"+ cookie);
if (!string.IsNullOrEmpty(cookie))
{
webRequest.SetRequestHeader("Cookie", cookie);
}
// Request and wait for the desired page.
yield return webRequest.SendWebRequest();
string[] pages = uri.Split('/');
int page = pages.Length - 1;
if (webRequest.isNetworkError)
{
callBack?.Invoke(webRequest.error, webRequest.responseCode);
}
else
{
callBack?.Invoke(webRequest.downloadHandler.text, webRequest.responseCode);
}
}
}
/// <summary>
/// 加载图片方法
/// </summary>
/// <param name="uri"></param>
/// <param name="callBack"></param>
/// <returns></returns>
public static IEnumerator UnityWebRequestGetImageData(string _url, Action<Sprite> callBack)
{
using (UnityWebRequest uwr = UnityWebRequestTexture.GetTexture(_url))
{
yield return uwr.SendWebRequest();
if (uwr.isHttpError || uwr.isNetworkError) Debug.Log(uwr.error);
else
{
if (uwr.isDone)
{
Texture2D texture2d = DownloadHandlerTexture.GetContent(uwr);
Sprite tempSprite = Sprite.Create(texture2d, new Rect(0, 0, texture2d.width, texture2d.height), new Vector2(0.5f, 0.5f));
callBack?.Invoke(tempSprite);
Resources.UnloadUnusedAssets();
}
}
}
}
/// <summary>
/// 加载图片方法
/// </summary>
/// <param name="uri"></param>
/// <param name="callBack"></param>
/// <returns></returns>
public static IEnumerator UnityWebRequestGetTextureData(string _url, Action<Texture2D> callBack)
{
using (UnityWebRequest uwr = UnityWebRequestTexture.GetTexture(_url))
{
yield return uwr.SendWebRequest();
if (uwr.isHttpError || uwr.isNetworkError) Debug.Log(uwr.error);
else
{
if (uwr.isDone)
{
Texture2D texture2d = DownloadHandlerTexture.GetContent(uwr);
//Sprite tempSprite = Sprite.Create(texture2d, new Rect(0, 0, texture2d.width, texture2d.height), new Vector2(0.5f, 0.5f));
callBack?.Invoke(texture2d);
Resources.UnloadUnusedAssets();
}
}
}
}
}
}
unity网络请求
最新推荐文章于 2023-06-12 12:16:07 发布