using LogLibrary.Log;
|
using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace WIDESEA_Common;
|
|
public class HttpsClient
|
{
|
private static readonly LogFactory LogFactory = new LogFactory();
|
|
// 封装一个用HttpClient发送GET请求的方法有参数
|
public static async Task<string> GetAsync(string url, Dictionary<string, object> parameters)
|
{
|
// 记录请求参数
|
LogRequestParameters(parameters, url);
|
|
// 将参数拼接到URL中
|
string queryString = string.Join("&", parameters.Select(x => $"{x.Key}={x.Value}"));
|
url += "?" + queryString;
|
|
// 创建HttpClient实例
|
using (HttpClient client = new HttpClient())
|
{
|
// 发送GET请求并获取响应
|
HttpResponseMessage response = await client.GetAsync(url);
|
|
// 确保响应成功
|
response.EnsureSuccessStatusCode();
|
|
// 读取响应内容
|
string responseBody = await response.Content.ReadAsStringAsync();
|
|
// 记录响应参数
|
LogResponseParameters(responseBody, url);
|
|
// 返回响应内容
|
return responseBody;
|
}
|
}
|
|
// 封装一个用HttpClient发送Post请求的方法有参数
|
public static async Task<string> PostAsync(string url, Dictionary<string, object> parameters)
|
{
|
// 记录请求参数
|
LogRequestParameters(parameters, url);
|
|
// 创建HttpClient实例
|
using (HttpClient client = new HttpClient())
|
{
|
// 将参数转换为FormUrlEncodedContent
|
string content = JsonConvert.SerializeObject(parameters);
|
|
//client.Timeout = TimeSpan.from;
|
|
var request = new HttpRequestMessage(HttpMethod.Post, url);
|
|
request.Content = new StringContent(content, Encoding.UTF8, "application/json");
|
//var content = new FormUrlEncodedContent(ConvertToKeyValuePairs(parameters));
|
//// 发送POST请求并获取响应
|
//HttpResponseMessage response = await client.PostAsync(url, content);
|
HttpResponseMessage response = await client.SendAsync(request);
|
|
// 确保响应成功
|
response.EnsureSuccessStatusCode();
|
|
// 读取响应内容
|
string responseBody = await response.Content.ReadAsStringAsync();
|
|
// 记录响应参数
|
LogResponseParameters(responseBody, url);
|
|
// 返回响应内容
|
return responseBody;
|
}
|
}
|
|
private static void LogRequestParameters(Dictionary<string, object> parameters,string url = "")
|
{
|
StringBuilder builder = new StringBuilder();
|
builder.Append(Environment.NewLine);
|
builder.Append("---------------------------------------------");
|
builder.Append(Environment.NewLine);
|
builder.Append("url:" + url + "请求参数: " + JsonConvert.SerializeObject(parameters));
|
LogFactory.GetLog("API接口").Info(true, builder);
|
}
|
|
private static void LogResponseParameters(string responseBody, string url = "")
|
{
|
StringBuilder builder = new StringBuilder();
|
builder.Append(Environment.NewLine);
|
builder.Append("url:" + url + "响应参数: " + responseBody);
|
builder.Append(Environment.NewLine);
|
builder.Append("---------------------------------------------");
|
builder.Append(Environment.NewLine);
|
LogFactory.GetLog("API接口").Info(true, builder);
|
}
|
|
private static IEnumerable<KeyValuePair<string, string>> ConvertToKeyValuePairs(Dictionary<string, object> parameters)
|
{
|
foreach (var kvp in parameters)
|
{
|
yield return new KeyValuePair<string, string>(kvp.Key, kvp.Value?.ToString());
|
}
|
}
|
|
}
|