在 Net7.0 环境下如何使用 RestSharp 发送 Http(FromBody和FromForm)请求

 更新时间:2023年09月22日 09:16:28   作者:可均可可  
这篇文章主要介绍了在 Net7.0 环境下使用 RestSharp 发送 Http(FromBody和FromForm)请求,今天,我就两个小的知识点,就是通过使用 RestSharp 访问 WebAPI,提交 FromBody 和 FromForm 两种方式的数据,还是有些区别的,本文结合实例代码介绍的非常详细,需要的朋友参考下吧

一、简介

最近,在做一个数据传输的服务,我在一个Worker Service里面需要访问 WebAPI 接口,并传输数据,也可以提交数据。由于第一次使用 RestSharp 发送请求,也遇到了很多问题,不过最终把问题都解决了。什么东西都一样,第一次做都会才很多坑。

今天,我就两个小的知识点,就是通过使用 RestSharp 访问 WebAPI,提交 FromBody 和 FromForm 两种方式的数据,还是有些区别的。

我当初也搞了一段时间。

我先说一下我的编码环境:

操作系统:Windows 10 Professional
开发工具:Visual Studio 2022
客户端程序:Worker Service
服务端程序:Net Core WebAPI
框架版本:Net7.0

二、我的代码    

以下我就介绍一下,使用 RestSharp、以FromBody 和 FromForm 两种方式提交数据的实现,废话不多说,直接上代码。如果是重点代码,我会以红色标注。

WebAPI 端的代码:    

 [HttpPost]
        public async Task<CommonJsonResult<string>> AddOrUpdateScannerSetting([FromBody]/[FromForm] ScannerSettingInputDto inputDto)
        {
        }

其他的代码不用细看,都是我的逻辑代码。
Worker Service 端的代码:

using (RestClient restClient = new RestClient())
            {
                var updateScannerSettingRequest = new RestRequest(new Uri(updateScannerSettingUrl), Method.Post);
                updateScannerSettingRequest.AddHeader("Authorization", "Bearer " + token);//增加的 JWT 认证
                updateScannerSettingRequest.AddHeader("Accept", "application/json");
                updateScannerSettingRequest.RequestFormat = DataFormat.Json;
                #region [FromBody]接收,这里有两种方式,都是可以的
                1、updateScannerSettingRequest.AddParameter("application/json", JsonConvert.SerializeObject(scannerSettingInputDto), ParameterType.RequestBody);
                2、updateScannerSettingRequest.AddBody(scannerSettingInputDto);
                #endregion
                #region [FromForm]接收,所有字段都需要自己添加
                updateScannerSettingRequest.AddParameter("ScannerId", scannerSettingInputDto.ScannerId);
                updateScannerSettingRequest.AddParameter("Camera1Id", scannerSettingInputDto.Camera1Id);
                updateScannerSettingRequest.AddParameter("Camera2Id", scannerSettingInputDto.Camera2Id);
                updateScannerSettingRequest.AddParameter("Camera3Id", scannerSettingInputDto.Camera3Id);
                updateScannerSettingRequest.AddParameter("Camera4Id", scannerSettingInputDto.Camera4Id);
                updateScannerSettingRequest.AddParameter("Camera1IntegrationTime", scannerSettingInputDto.Camera1IntegrationTime);
                updateScannerSettingRequest.AddParameter("Camera2IntegrationTime", scannerSettingInputDto.Camera2IntegrationTime);
                updateScannerSettingRequest.AddParameter("Camera3IntegrationTime", scannerSettingInputDto.Camera3IntegrationTime);
                updateScannerSettingRequest.AddParameter("Camera4IntegrationTime", scannerSettingInputDto.Camera4IntegrationTime);
                updateScannerSettingRequest.AddParameter("Camera1Image", scannerSettingInputDto.Camera1Image);
                updateScannerSettingRequest.AddParameter("Camera2Image", scannerSettingInputDto.Camera2Image);
                updateScannerSettingRequest.AddParameter("Camera3Image", scannerSettingInputDto.Camera3Image);
                updateScannerSettingRequest.AddParameter("Camera4Image", scannerSettingInputDto.Camera4Image);
                updateScannerSettingRequest.AddParameter("ScannerCoordinate", scannerSettingInputDto.ScannerCoordinate);
                updateScannerSettingRequest.AddParameter("PatrolFile", scannerSettingInputDto.PatrolFile);
                updateScannerSettingRequest.AddParameter("WarningPhone", scannerSettingInputDto.WarningPhone);
                updateScannerSettingRequest.AddParameter("IsUpdate", scannerSettingInputDto.IsUpdate);
                updateScannerSettingRequest.AddParameter("Remarks", scannerSettingInputDto.Remarks);
                #endregion
                var updateScannerSettingResponse = await restClient.ExecuteAsync(updateScannerSettingRequest);
                var updateScannerSettingContent = updateScannerSettingResponse.Content;
                if (!string.IsNullOrEmpty(updateScannerSettingContent) && !string.IsNullOrWhiteSpace(updateScannerSettingContent))
                {
                    var commontResultObject = JsonConvert.DeserializeObject<CommonJsonResult<string>>(updateScannerSettingContent);
                    if (commontResultObject != null && commontResultObject.Success)
                    {
                        result = true;
                    }
                    else
                    {
                        result = false;
                        _logger.LogError(updateScannerSettingContent);
                    }
                }
                else
                {
                    result = true;
                }
            }

还有一个辅助类型:

/// <summary>
    /// 该类型定义了以 JSON 为返回结果的通用数据格式。
    /// </summary>
    /// <typeparam name="TResult">结果的返回类型。</typeparam>
    public sealed class CommonJsonResult<TResult>
    {
        /// <summary>
        /// 获取或者设置操作的结果是成功还是失败,True 表示操作成功,False 表示操作失败。
        /// </summary>
        public bool Success { get; set; }
        /// <summary>
        /// 获取或者设置操作的结果编码值。
        /// </summary>
        public int StateCode { get; set; }
        /// <summary>
        /// 获取或者设置操作的提示信息。
        /// </summary>
        public string? Message { get; set; }
        /// <summary>
        /// 获取或者设置数据的结果。
        /// </summary>
        public TResult? DataResult { get; set; }
    }

到此这篇关于在 Net7.0 环境下使用 RestSharp 发送 Http(FromBody和FromForm)请求的文章就介绍到这了,更多相关RestSharp 发送 Http请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • asp.net core标签助手的高级用法TagHelper+Form

    asp.net core标签助手的高级用法TagHelper+Form

    这篇文章主要为大家详细介绍了asp.net core标签助手的高级用法TagHelper+Form,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • LINQ 标准查询操作符

    LINQ 标准查询操作符

    本文介绍了LINQ标准查询操作符。没有这些操作符,LINQ就不会存在。本文为理解这些操作符的功能提供了很好的基础。了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰富的功能。
    2010-02-02
  • ASP.NET网站实时显示时间的方法

    ASP.NET网站实时显示时间的方法

    这篇文章主要介绍了ASP.NET网站实时显示时间的方法,主要通过AJAX控件来实现该功能,是非常具有实用价值的技巧,需要的朋友可以参考下
    2014-11-11
  • ASP.NET实现读取Excel内容并在Web上显示

    ASP.NET实现读取Excel内容并在Web上显示

    这篇文章主要介绍了ASP.NET实现读取Excel内容并在Web上显示,很实用的一个技巧,需要的朋友可以参考下
    2014-08-08
  • MVC使用MvcPager实现分页效果

    MVC使用MvcPager实现分页效果

    这篇文章主要为大家详细介绍了MVC使用MvcPager实现分页效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • c#  操作符?? null coalescing operator

    c# 操作符?? null coalescing operator

    ?? "null coalescing" operator 是c#新提供的一个操作符,这个操作符提供的功能是判断左侧的操作数是否是null,如果是则返回结果是右侧的操作数;非null则返回左侧的操作数。
    2009-06-06
  • ASP.NET通用权限验证的实现代码思路

    ASP.NET通用权限验证的实现代码思路

    这篇文章主要介绍了ASP.NET通用权限验证的实现代码思路,需要的朋友可以参考下
    2015-12-12
  • C#开发微信 二维码鼠标滑动 图像显示隐藏效果(推荐)

    C#开发微信 二维码鼠标滑动 图像显示隐藏效果(推荐)

    客户端微信在二维码状态下,鼠标滑过,会有一张手机的图片滑动滑出,从隐藏到显示,从显示到隐藏。效果非常棒,本文思路介绍明确,感兴趣的朋友一起看看吧
    2016-11-11
  • C# .Net动态调用webService实现思路及代码

    C# .Net动态调用webService实现思路及代码

    动态调用web服务将执行以下步骤:获取WSDL/生成客户端代理类代码/设定编译参数/编译代理类/生成代理实例,并调用方法,很详细的,感兴趣的你可不要错过了哈
    2013-02-02
  • IIS上部署Asp.net core Webapi的实现步骤

    IIS上部署Asp.net core Webapi的实现步骤

    ASP.NET Core Web API是构建RESTful应用程序的理想平台,本文主要介绍了IIS上部署Asp.net core Webapi的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07

最新评论