Files
juipnet/Infrastructure/Hncore.Infrastructure/Extension/HttpClientExtension.cs

94 lines
2.9 KiB
C#
Raw Normal View History

2020-12-28 14:55:48 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Hncore.Infrastructure.Serializer;
namespace Hncore.Infrastructure.Extension
{
public static class HttpClientFactoryExtension
{
public static HttpClient CreateClient(this IHttpClientFactory factory, TimeSpan timeOut)
{
var client = factory.CreateClient();
client.Timeout = timeOut;
return client;
}
}
public static class HttpClientExtension
{
/// <summary>
/// post请求ContentTypeapplication/json
/// </summary>
/// <param name="httpClient"></param>
/// <param name="path"></param>
/// <param name="data"></param>
/// <returns></returns>
public static async Task<HttpResponseMessage> PostAsJson(this HttpClient httpClient, string path, object data,
Encoding encoding = null)
{
if (encoding == null)
{
encoding = Encoding.UTF8;
}
string content = "";
if (data is string s)
{
content = s;
}
else
{
content = data.ToJson();
}
HttpContent httpContent = new StringContent(content, encoding);
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
return await httpClient.PostAsync(path, httpContent);
}
/// <summary>
/// post请求ContentTypeapplication/json
/// </summary>
/// <param name="httpClient"></param>
/// <param name="path"></param>
/// <param name="data"></param>
/// <returns></returns>
public static async Task<string> PostAsJsonGetString(this HttpClient httpClient, string path, object data,
Encoding encoding = null)
{
var res = await httpClient.PostAsJson(path, data, encoding);
return await res.Content.ReadAsStringAsync();
}
public static async Task<HttpResponseMessage> PostAsForm(this HttpClient httpClient, string path, IEnumerable<KeyValuePair<string, string>> data,
Encoding encoding = null)
{
if (encoding == null)
{
encoding = Encoding.UTF8;
}
HttpContent httpContent = new FormUrlEncodedContent(data);
return await httpClient.PostAsync(path, httpContent);
}
public static async Task<string> PostAsFormGetString(this HttpClient httpClient, string path, IEnumerable<KeyValuePair<string, string>> data,
Encoding encoding = null)
{
var resp=await httpClient.PostAsForm(path, data, encoding);
return await resp.Content.ReadAsStringAsync();
}
}
2020-10-07 20:25:03 +08:00
}