using System;
using System.Collections;
using System.IO;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using XLua;
using System.Security.Cryptography;
using System.Text;
[LuaCallCSharp]
public class WebRequest : MonoBehaviour
{
private string url;
private string fileUrl;
MD5 hash;
private void Awake()
{
string settingJson = File.ReadAllText(Application.streamingAssetsPath + "/settings.json");
SettingModel settings = JsonUtility.FromJson<SettingModel>(settingJson);
fileUrl = settings.file;
url = "http://" + settings.server + ":" + settings.port;
hash = MD5.Create();
}
public void SendGetRequest(string geturl,Action<string> Handler)
{
StartCoroutine(GetRequest(geturl, Handler));
}
IEnumerator GetRequest(string geturl,Action<string> Handler)
{
yield return new WaitForEndOfFrame();
using (UnityWebRequest www = UnityWebRequest.Get(url + geturl))
{
yield return www.SendWebRequest();
if(www.isHttpError||www.isNetworkError)
{
Debug.Log(url+geturl);
Debug.Log(www.error);
}
else
{
Handler(www.downloadHandler.text);
}
}
}
public void SendGetRequestWithHeader(string geturl, string data, Action<string> Handler)
{
StartCoroutine(GetRequestWithHeader(geturl, data, Handler));
}
IEnumerator GetRequestWithHeader(string geturl, string header, Action<string> Handler)
{
yield return new WaitForEndOfFrame();
using (UnityWebRequest www = new UnityWebRequest(url + geturl, "GET"))
{
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(header);
www.uploadHandler = (UploadHandler)new UploadHandlerRaw(postBytes);
www.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
www.SetRequestHeader("Authorization", header);
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
}
else
{
Handler(www.downloadHandler.text);
}
}
}
public void SendPostRequest(string posturl,string data,Action<string> Handler)
{
StartCoroutine(PostRequest(posturl, data, Handler));
}
IEnumerator PostRequest(string posturl,string data,Action<string> Handler)
{
yield return new WaitForEndOfFrame();
using (UnityWebRequest www = UnityWebRequest.Post(url + posturl, data))
{
www.uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(data));
www.downloadHandler = new DownloadHandlerBuffer();
www.SetRequestHeader("Content-Type", "application/json;charset=utf-8");
yield return www.SendWebRequest();
Handler(www.downloadHandler.text);
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(url + posturl);
Debug.Log(www.error);
}
}
}
public void SendPutRequest(string puturl,string data,Action<string> Handler)
{
StartCoroutine(PutRequest(puturl, data, Handler));
}
IEnumerator PutRequest(string puturl,string data,Action<string> Handler)
{
yield return new WaitForEndOfFrame();
using(UnityWebRequest www = UnityWebRequest.Put(url + puturl, data))
{
www.uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(data));
www.SetRequestHeader("Content-Type", "application/json;charset=utf-8");
yield return www.SendWebRequest();
if(www.isNetworkError||www.isHttpError)
{
Debug.Log(url + puturl);
Debug.Log(www.error);
}
else
{
Handler("OK");
}
}
}
public void SendDeleteRequest(string deleteurl,string data,Action<string> Handler)
{
StartCoroutine(DeleteRequest(deleteurl, data, Handler));
}
IEnumerator DeleteRequest(string deleteurl,string data,Action<string> Handler)
{
yield return new WaitForEndOfFrame();
using (UnityWebRequest www = UnityWebRequest.Delete(url + deleteurl))
{
www.SetRequestHeader("Content-Type", "application/json;charset=utf-8");
UploadHandler up = new UploadHandlerRaw(Encoding.UTF8.GetBytes(data));
www.uploadHandler = up;
yield return www.SendWebRequest();
if(www.isHttpError|| www.isNetworkError)
{
Debug.Log(url + deleteurl);
Debug.Log(www.error);
}
else
{
Handler("OK");
}
}
}
}
网络请求GET带header
最新推荐文章于 2024-02-04 22:22:57 发布
本文详细介绍了Unity中的WebRequest组件如何进行GET、POST、PUT和DELETE等HTTP请求,包括设置header、下载和上传数据,并展示了错误处理和回调机制。适合Unity开发者学习网络通信技术。
摘要由CSDN通过智能技术生成