Frame/Assets/Scripts/Network/HttpManager.cs

64 lines
1.9 KiB
C#
Raw Normal View History

using Cysharp.Threading.Tasks;
using Newtonsoft.Json;
using UnityEngine;
using UnityEngine.Networking;
namespace Game
{
public interface IHttpManager
{
UniTask<bool> LoginAsync(string username, string password, ResponseData responseData);
}
public class HttpManager : ManagerBase, IHttpManager
{
public async UniTask<bool> 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<ResponseData>(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;
}
}