You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
2.3 KiB
C#

using RestSharp;
using System;
using System.Net;
namespace EntrustSettle.Common.HttpRestSharp
{
/// <summary>
/// 基于 RestSharp 封装HttpHelper
/// </summary>
public static class HttpHelper
{
/// <summary>
/// Get 请求
/// </summary>
/// <typeparam name="T">泛型</typeparam>
/// <param name="baseUrl">根域名:http://apk.neters.club/</param>
/// <param name="url">接口:api/xx/yy</param>
/// <param name="pragm">参数:id=2&name=老张</param>
/// <returns></returns>
public static T GetApi<T>(string baseUrl, string url, string pragm = "")
{
var client = new RestSharpClient(baseUrl);
var request = client.Execute(string.IsNullOrEmpty(pragm)
? new RestRequest(url, Method.GET)
: new RestRequest($"{url}?{pragm}", Method.GET));
if (request.StatusCode != HttpStatusCode.OK)
{
return (T)Convert.ChangeType(request.ErrorMessage, typeof(T));
}
dynamic temp = Newtonsoft.Json.JsonConvert.DeserializeObject(request.Content, typeof(T));
//T result = (T)Convert.ChangeType(request.Content, typeof(T));
return (T)temp;
}
/// <summary>
/// Post 请求
/// </summary>
/// <typeparam name="T">泛型</typeparam>
/// <param name="url">完整的url</param>
/// <param name="body">post body,可以匿名或者反序列化</param>
/// <returns></returns>
public static T PostApi<T>(string url, object body = null)
{
var client = new RestClient($"{url}");
IRestRequest queest = new RestRequest();
queest.Method = Method.POST;
queest.AddHeader("Accept", "application/json");
queest.AddJsonBody(body); // 可以使用 JsonSerializer
var result = client.Execute(queest);
if (result.StatusCode != HttpStatusCode.OK)
{
return (T)Convert.ChangeType(result.ErrorMessage, typeof(T));
}
dynamic temp = Newtonsoft.Json.JsonConvert.DeserializeObject(result.Content, typeof(T));
//T result = (T)Convert.ChangeType(request.Content, typeof(T));
return (T)temp;
}
}
}