37 lines
1.3 KiB
C#
37 lines
1.3 KiB
C#
using System.Net;
|
|
using System.Net.Http;
|
|
using Cysharp.Threading.Tasks;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using Newtonsoft.Json;
|
|
|
|
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)
|
|
{
|
|
using var response = await client.GetAsync(url, cancellationToken);
|
|
return await response.Content.ReadAsStringAsync();
|
|
}
|
|
|
|
public override async UniTask<string> PostAsync<T>(string url, T value, CancellationToken cancellationToken = default)
|
|
{
|
|
HttpContent content = value switch
|
|
{
|
|
string _string => new StringContent(_string,Encoding.Unicode,"application/json"),
|
|
_ => new StringContent(JsonConvert.SerializeObject(value),Encoding.Unicode,"application/json")
|
|
};
|
|
using var response = await client.PostAsync(url, content, cancellationToken);
|
|
if (response.StatusCode is HttpStatusCode.OK)
|
|
{
|
|
return await response.Content.ReadAsStringAsync();
|
|
}
|
|
BIT4Log.Log<HttpClient>(response.StatusCode);
|
|
return response.StatusCode.ToString();
|
|
}
|
|
}
|
|
}
|