BITKit/Src/Core/Net/HttpClient.cs

37 lines
1.3 KiB
C#
Raw Normal View History

2023-06-29 14:57:11 +08:00
using System.Net;
2023-06-05 19:57:17 +08:00
using System.Net.Http;
2023-06-29 14:57:11 +08:00
using Cysharp.Threading.Tasks;
2023-06-07 18:38:07 +08:00
using System.Text;
2023-06-29 14:57:11 +08:00
using System.Threading;
2023-06-05 19:57:17 +08:00
using Newtonsoft.Json;
2023-06-07 18:38:07 +08:00
2023-06-05 19:57:17 +08:00
namespace BITKit.HttpNet
{
[System.Serializable]
public sealed class HttpClient : WebProvider
{
System.Net.Http.HttpClient client = new();
public override async UniTask<string> GetAsync(string url, CancellationToken cancellationToken = default)
{
2023-06-07 18:38:07 +08:00
using var response = await client.GetAsync(url, cancellationToken);
return await response.Content.ReadAsStringAsync();
2023-06-05 19:57:17 +08:00
}
public override async UniTask<string> PostAsync<T>(string url, T value, CancellationToken cancellationToken = default)
{
2023-06-07 18:38:07 +08:00
HttpContent content = value switch
2023-06-05 19:57:17 +08:00
{
2023-06-07 18:38:07 +08:00
string _string => new StringContent(_string,Encoding.Unicode,"application/json"),
_ => new StringContent(JsonConvert.SerializeObject(value),Encoding.Unicode,"application/json")
};
2023-06-05 19:57:17 +08:00
using var response = await client.PostAsync(url, content, cancellationToken);
2023-06-07 18:38:07 +08:00
if (response.StatusCode is HttpStatusCode.OK)
{
return await response.Content.ReadAsStringAsync();
}
BIT4Log.Log<HttpClient>(response.StatusCode);
return response.StatusCode.ToString();
2023-06-05 19:57:17 +08:00
}
}
}