using System; using System.Collections; using System.Collections.Generic; using System.Text; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using UnityEngine; using UnityEngine.Networking; namespace NBF { [Serializable] public class HttpResult { public int Code { get; set; } public JToken Data { get; set; } } public class Net : MonoBehaviour { private string serverUrl = "http://localhost:8080"; private string serverPassword = ""; public static Net Instance { get; private set; } private void Awake() { Instance = this; } public void SetServer(string server, string password) { if (!(server.StartsWith("http://") || server.StartsWith("https://"))) { server = "http://" + server; } if (server.EndsWith("/")) { server = server.Substring(0, server.Length - 1); } else if (server.EndsWith("\\")) { server = server.Substring(0, server.Length - 1); } serverUrl = server; serverPassword = password; } #region Post public void Send(string action, Dictionary form, Action callback = null) { StartCoroutine(SendYield(action, form, callback)); } private IEnumerator SendYield(string action, Dictionary form, Action callback = null) { if (form == null) { form = new Dictionary(); } var url = serverUrl + action; form["sign"] = serverPassword; UnityWebRequest request = UnityWebRequest.Post(url, form); request.downloadHandler = new DownloadHandlerBuffer(); // 4️⃣ 发送 yield return request.SendWebRequest(); // 5️⃣ 处理结果 if (request.result != UnityWebRequest.Result.Success) { Debug.LogError(request.error); callback?.Invoke(new HttpResult() { Code = -1, Data = request.error }); } else { Debug.Log("Response: " + request.downloadHandler.text); var result = JsonConvert.DeserializeObject(request.downloadHandler.text); callback?.Invoke(result); } } #endregion } }