Unity 带token的http请求(post和get)
·
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
/// <summary>
/// http请求模块,包含Get和Post请求
/// </summary>
public class HttpSvc : MonoBehaviour
{
public static HttpSvc Instance;
public string token;
private void Awake()
{
InitSvc();
}
public void InitSvc()
{
Instance = this;
}
/// <summary>
/// Get请求,无token请求
/// </summary>
/// <param name="url">地址</param>
/// <param name="myCall">服务器回调</param>
public void HttpGetToServer(string url, Action<string> myCall)
{
StartCoroutine(WebRequestGetServer(url, myCall));
}
/// <summary>
/// Get请求需带Token发送
/// </summary>
/// <param name="url"></param>
/// <param name="myCall"></param>
public void HttpTokenGetToServer(string url, Action<string> myCall)
{
StartCoroutine(ResTokenGetCallBack(url, myCall));
}
private IEnumerator WebRequestGetServer(string url, Action<string> myCall)
{
UnityWebRequest request = new UnityWebRequest(url);
request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
//request.SetRequestHeader("Authorization", token);
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError)
{
Debug.LogError(request.error);
}
else
{
//Debug.Log(request.downloadHandler.text);
string str = request.downloadHandler.text;
myCall?.Invoke(str);
}
}
private IEnumerator ResTokenGetCallBack(string url, Action<string> myCall)
{
UnityWebRequest request = new UnityWebRequest(url);
request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
request.SetRequestHeader("Authorization", token);
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError)
{
Debug.LogError(request.error + "\n" + request.downloadHandler.text);
}
else
{
Debug.Log(request.downloadHandler.text);
string str = request.downloadHandler.text;
myCall?.Invoke(str);
}
}
/// <summary>
/// Post请求 无token请求
/// </summary>
/// <param name="url">地址</param>
/// <param name="postData">表单</param>
/// <param name="myCall">返回回调</param>
public void HttpPostServer(string url, string postData, Action<string> myCall)
{
StartCoroutine(WebRequestPostServer(url, postData, myCall));
}
/// <summary>
/// Post请求需要带Token发送
/// </summary>
/// <param name="url"></param>
/// <param name="postData"></param>
/// <param name="myCall"></param>
public void HttpTokenPostServer(string url, string postData, Action<string> myCall)
{
StartCoroutine(ResTokenPostCallBack(url, postData, myCall));
}
private IEnumerator WebRequestPostServer(string url, string postData, Action<string> myCall = null)
{
using (UnityWebRequest webRequest = new UnityWebRequest(url, "POST"))
{
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postData);
webRequest.uploadHandler = (UploadHandler)new UploadHandlerRaw(postBytes);
webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
yield return webRequest.SendWebRequest();
if (webRequest.isHttpError || webRequest.isNetworkError)
{
Debug.LogError(webRequest.error);
}
else
{
//Debug.Log(webRequest.downloadHandler.text);
string str = webRequest.downloadHandler.text;
myCall?.Invoke(str);
}
}
}
private IEnumerator ResTokenPostCallBack(string url, string postData, Action<string> myCall)
{
using (UnityWebRequest webRequest = new UnityWebRequest(url, "POST"))
{
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postData);
webRequest.uploadHandler = (UploadHandler)new UploadHandlerRaw(postBytes);
webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
webRequest.SetRequestHeader("Authorization", token);
yield return webRequest.SendWebRequest();
if (webRequest.isHttpError || webRequest.isNetworkError)
{
Debug.Log(webRequest.error);
}
else
{
// Debug.Log(webRequest.downloadHandler.text);
string str = webRequest.downloadHandler.text;
myCall?.Invoke(str);
}
}
}
/// <summary>
/// 上传图片不
/// </summary>
/// <param name="tex"></param>
/// <param name="id"></param>
/// <param name="url"></param>
/// <param name="imgName"></param>
/// <param name="callBack"></param>
public void UpLoadPic(Texture2D tex, string url, Action<string> callBack)
{
StartCoroutine(ResUploadPic(tex, url, callBack));
}
private IEnumerator ResUploadPic(Texture2D tex, string url, Action<string> callBack)
{
WWWForm form = new WWWForm();
form.AddBinaryData("avatarFile", tex.EncodeToPNG());
UnityWebRequest request = UnityWebRequest.Post(url, form);
request.SetRequestHeader("Authorization", token);
using (request)
{
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError)
{
Debug.LogError(request.error);
}
else
{
string result = request.downloadHandler.text;
Debug.LogError(result);
callBack?.Invoke(result);
}
}
}
//public void GetIDUpLoadPic(Texture2D tex, string id, string url, Action<string, string> callBack)
//{
// StartCoroutine(ResIDUploadPic(tex, id, url, callBack));
//}
//private IEnumerator ResIDUploadPic(Texture2D tex, string id, string url, Action<string, string> callBack)
//{
// WWWForm form = new WWWForm();
// form.AddField("ss", id);
// form.AddBinaryData("bb", tex.EncodeToPNG());
// UnityWebRequest request = UnityWebRequest.Post(url, form);
// request.SetRequestHeader("Authorization", token);
// using (request)
// {
// if (request.isHttpError || request.isNetworkError)
// {
// Debug.LogError(request.error);
// }
// else
// {
// string result = request.downloadHandler.text;
// Debug.LogError(result);
// callBack?.Invoke(result, id);
// }
// }
//}
}
xxxxx fromInfo = new xxxxx();
fromInfo.category = "";
fromInfo.type1 = "";
fromInfo.type2 = "";
reqData = JsonConvert.SerializeObject(fromInfo);
HttpSvc.Instance.HttpTokenPostServer("https://t", reqData, callback);
更多推荐
所有评论(0)