using Cysharp.Threading.Tasks; using Newtonsoft.Json; using UnityEngine; using UnityEngine.Networking; namespace Game { public interface IHttpManager { UniTask LoginAsync(string username, string password, ResponseData responseData); } public class HttpManager : ManagerBase, IHttpManager { public async UniTask LoginAsync(string username, string password, ResponseData responseData) { WWWForm wwwForm = new WWWForm(); wwwForm.AddField("username", username); wwwForm.AddField("password", password); using (UnityWebRequest request = UnityWebRequest.Post(NetworkConst.loginUrl, wwwForm)) { await request.SendWebRequest(); // 处理响应 if (request.result == UnityWebRequest.Result.Success) { Debug.Log("POST request successful!"); var downloadHandlerText = request.downloadHandler.text; Debug.Log("Response: " + downloadHandlerText); var data = JsonConvert.DeserializeObject(downloadHandlerText); if (data.code == "0") { Game.socketManager.SetHttpToken(data.data.ToString()); Game.socketManager.ConnectAsync(); responseData = data; return true; } } else { Debug.LogError("POST request failed: " + request.error); } responseData = null; return false; } } } public class UserLoginData { public string username; public string password; } public class ResponseData { public string code; public string msg; public object data; } }