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

2024-03-04 0 554
目录
  • 一、简介
  • 二、我的代码    

一、简介

最近,在做一个数据传输的服务,我在一个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请求内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

您可能感兴趣的文章:

  • .net6环境下使用RestSharp请求GBK编码网页乱码的解决方案

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 ASP.NET 在 Net7.0 环境下如何使用 RestSharp 发送 Http(FromBody和FromForm)请求 https://www.u-9.cn/biancheng/aspnet/182969.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务