【.NetCore 集成 RestSharp调用WebApi】

  • Post author:
  • Post category:其他


1.使用Nuget安装RestSharp

在这里插入图片描述

2.编写一个调用的封装方法类,Get和Post方法。

     using RestSharp;

    /// <summary>
    /// ApiHelper.
    /// </summary>
    public class ApiHelper
    {
        /// <summary>
        /// Post方式调用的接口方法.
        /// </summary>
        /// <param name="input">入参.</param>
        /// <returns>接口返回的结果string.</returns>
        public static string PostApi(ApiInput input)
        {
            string contentType = "application/json";

            // 调用接口
            var client = new RestClient(input.ApiUrl);
            var request = new RestRequest(string.Empty, Method.Post);
            request.Timeout = 1000 * 60 * 5; // 限制时间 5分钟
            request.AddParameter(contentType,input.PostParams, ParameterType.RequestBody);
            request.AddHeader("Content-Type", "application/json");
            var response = client.Execute(request);
            var content = response.Content;
            return content;
        }

        /// <summary>
        /// Get方式调用的接口方法.
        /// </summary>
        /// <param name="input">入参.</param>
        /// <returns>接口返回的结果string.</returns>
        public static string GetApi(ApiInput input)
        {
            // 调用接口
            var client = new RestClient(input.ApiUrl);
            var request = new RestRequest(string.Empty, Method.Get);
            request.RequestFormat = DataFormat.Json;
            request.AddHeader("Content-Type", "application/json");
            request.Timeout = 1000 * 60 * 5; // 限制时间 5分钟
            foreach (var item in input.GetParams)
            {
                request.AddParameter(item.Key, item.Value.ToString());
            }

            var response = client.Execute(request);
            var content = response.Content;
            return content;
        }

       /// <summary>
        /// Get方式调用的接口方法无参数.
        /// </summary>
        /// <param name="input">入参.</param>
        /// <returns>接口返回的结果string.</returns>

        public static string GetApiNoParam(ApiInput input)
        {
            var client = new RestClient(input.ApiUrl);
            var request = new RestRequest();//get提交
            var response = client.Execute(request);
            var content = response.Content;
            return content;
        }
    

    }
  1. ApiInput代码

using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace Application.CommonDto
{
    /// <summary>
    /// 调用api接口的入参.
    /// </summary>
    public class ApiInput
    {
        /// <summary>
        /// api接口地址.
        /// </summary>
        public string ApiUrl { get; set; }

        /// <summary>
        /// api post方式的入参参数 Json.
        /// </summary>
        public string PostParams { get; set; }

        /// <summary>
        /// api Get方式的入参参数
        /// </summary>
        public List<GetParamModel> GetParams { get; set; }


    /// <summary>
    /// Get参数的结构
    /// </summary>
    public class GetParamModel
    {
        /// <summary>
        /// key.
        /// </summary>
        public string Key { get; set; }

        /// <summary>
        /// value值.
        /// </summary>
        public string  Value { get; set; }
    }
  }
}

4.实际调用的示例

            ApiInput apiInput = new ApiInput();
            apiInput.ApiUrl = ApiUrlConsts.SapApi_WateOffSapOnTheWayVoucher; // 调用接口地址-冲销sap在途物资凭证
            apiInput.PostParams = JsonConvert.SerializeObject(input);
            var content = ApiHelper.PostApi(apiInput);



版权声明:本文为qq_27860623原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。