using System.Collections.Generic;
using RestSharp;
namespace 命名空间
{
public static class HttpClientHelper
{
private const string Url = "http://localhost:5000/";
/// <summary>
/// Http访问帮助类
/// </summary>
/// <param name="method">请求方式 Get Post Delete Put 等例(Method.Post)</param>
/// <param name="action">请求方法</param>
/// <param name="requestPrm">请求参数</param>
/// <param name="requestHeader">请求头</param>
/// <returns></returns>
public static string Request(Method method, string action, string requestPrm = null,
Dictionary<string, string> requestHeader = null)
{
var serviceUrl = Url + action;
//1.首先创建一个 RestClient对象
//serviceUrl是需要请求的地址
var client = new RestClient(serviceUrl);
//2.创建一个请求,这里可以指定请求的类型
var request = new RestRequest { Method = method };
//3.给请求加各种参数
//添加头部信息
if (requestHeader != null)
{
foreach (var req in requestHeader)
{
request.AddHeader(req.Key, req.Value);
}
}
//添加文件
//也可以通过字节流的方式添加文件 AddFileBytes(string name, byte[] bytes, string filename, string contentType = "application/x-gzip")
// request.AddFile("filePath", pdfPath);
//添加参数
if (!string.IsNullOrWhiteSpace(requestPrm))
{
request.AddBody(requestPrm);
}
// request.AddParameter("Timeout", options.Timeout.Value);
//官网中还有好多添加参数的方法
//可以查看该地址进行https://restsharp.dev/api/RestSharp.html#class-restrequest
//4.执行请求,并获得返回值
var restResponse = client.Execute(request);
var result = restResponse.Content;
//处理返回值序列化也进行了封装,可以直接调用方法
//例如 Execute<Call>(request),可以直接将返回值序列化为对象
//至此一个请求就发送接收成功了
//使用起来还是比较方便的
return result;
}
}
}