You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.2 KiB
63 lines
2.2 KiB
using System;
|
|
using System.Collections;
|
|
using UnityEngine;
|
|
using UnityEngine.Networking;
|
|
|
|
public delegate void RequestDelegate(UnityWebRequest request, string data);
|
|
|
|
public static class WebRequest
|
|
{
|
|
private static readonly string server = "http://localhost:3000/api/";
|
|
|
|
public static void Get(MonoBehaviour behaviour, string url, RequestDelegate action)
|
|
{
|
|
behaviour.StartCoroutine(GetRequest(server+url, action));
|
|
}
|
|
|
|
public static void Post(MonoBehaviour behaviour, string url, string jsonData, RequestDelegate action)
|
|
{
|
|
behaviour.StartCoroutine(PostRequest(server + url, jsonData, action));
|
|
}
|
|
|
|
public static void PostFile(MonoBehaviour behaviour, string url, string filePath, RequestDelegate action)
|
|
{
|
|
behaviour.StartCoroutine(PostFileRequest(server + url, filePath, action));
|
|
}
|
|
|
|
private static IEnumerator GetRequest(string url, RequestDelegate action)
|
|
{
|
|
using (UnityWebRequest request = UnityWebRequest.Get(url))
|
|
{
|
|
request.SetRequestHeader("Content-Type", "application/json");
|
|
yield return request.SendWebRequest();
|
|
|
|
action(request, request.downloadHandler.text);
|
|
}
|
|
}
|
|
|
|
private static IEnumerator PostRequest(string url, string jsonData, RequestDelegate action)
|
|
{
|
|
var request = new UnityWebRequest(url, "POST");
|
|
byte[] bodyRaw = new System.Text.UTF8Encoding().GetBytes(jsonData);
|
|
request.uploadHandler = new UploadHandlerRaw(bodyRaw);
|
|
request.downloadHandler = new DownloadHandlerBuffer();
|
|
request.SetRequestHeader("Content-Type", "application/json");
|
|
|
|
yield return request.SendWebRequest();
|
|
|
|
action(request, request.downloadHandler.text);
|
|
}
|
|
|
|
private static IEnumerator PostFileRequest(string url, string filePath, RequestDelegate action)
|
|
{
|
|
var request = new UnityWebRequest(url, "POST");
|
|
request.uploadHandler = new UploadHandlerFile(filePath);
|
|
request.downloadHandler = new DownloadHandlerBuffer();
|
|
request.SetRequestHeader("Content-Type", "multipart/form-data");
|
|
|
|
yield return request.SendWebRequest();
|
|
|
|
action(request, request.downloadHandler.text);
|
|
}
|
|
|
|
}
|
|
|