欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在?Net7.0?環(huán)境下如何使用?RestSharp?發(fā)送?Http(FromBody和FromForm)請(qǐng)求

 更新時(shí)間:2023年09月22日 09:16:28   作者:可均可可  
這篇文章主要介紹了在?Net7.0?環(huán)境下使用?RestSharp?發(fā)送?Http(FromBody和FromForm)請(qǐng)求,今天,我就兩個(gè)小的知識(shí)點(diǎn),就是通過使用?RestSharp?訪問?WebAPI,提交?FromBody?和?FromForm?兩種方式的數(shù)據(jù),還是有些區(qū)別的,本文結(jié)合實(shí)例代碼介紹的非常詳細(xì),需要的朋友參考下吧

一、簡介

最近,在做一個(gè)數(shù)據(jù)傳輸?shù)姆?wù),我在一個(gè)Worker Service里面需要訪問 WebAPI 接口,并傳輸數(shù)據(jù),也可以提交數(shù)據(jù)。由于第一次使用 RestSharp 發(fā)送請(qǐng)求,也遇到了很多問題,不過最終把問題都解決了。什么東西都一樣,第一次做都會(huì)才很多坑。

今天,我就兩個(gè)小的知識(shí)點(diǎn),就是通過使用 RestSharp 訪問 WebAPI,提交 FromBody 和 FromForm 兩種方式的數(shù)據(jù),還是有些區(qū)別的。

我當(dāng)初也搞了一段時(shí)間。

我先說一下我的編碼環(huán)境:

操作系統(tǒng):Windows 10 Professional
開發(fā)工具:Visual Studio 2022
客戶端程序:Worker Service
服務(wù)端程序:Net Core WebAPI
框架版本:Net7.0

二、我的代碼    

以下我就介紹一下,使用 RestSharp、以FromBody 和 FromForm 兩種方式提交數(shù)據(jù)的實(shí)現(xiàn),廢話不多說,直接上代碼。如果是重點(diǎn)代碼,我會(huì)以紅色標(biāo)注。

WebAPI 端的代碼:    

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

其他的代碼不用細(xì)看,都是我的邏輯代碼。
Worker Service 端的代碼:

using (RestClient restClient = new RestClient())
            {
                var updateScannerSettingRequest = new RestRequest(new Uri(updateScannerSettingUrl), Method.Post);
                updateScannerSettingRequest.AddHeader("Authorization", "Bearer " + token);//增加的 JWT 認(rèn)證
                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;
                }
            }

還有一個(gè)輔助類型:

/// <summary>
    /// 該類型定義了以 JSON 為返回結(jié)果的通用數(shù)據(jù)格式。
    /// </summary>
    /// <typeparam name="TResult">結(jié)果的返回類型。</typeparam>
    public sealed class CommonJsonResult<TResult>
    {
        /// <summary>
        /// 獲取或者設(shè)置操作的結(jié)果是成功還是失敗,True 表示操作成功,F(xiàn)alse 表示操作失敗。
        /// </summary>
        public bool Success { get; set; }
        /// <summary>
        /// 獲取或者設(shè)置操作的結(jié)果編碼值。
        /// </summary>
        public int StateCode { get; set; }
        /// <summary>
        /// 獲取或者設(shè)置操作的提示信息。
        /// </summary>
        public string? Message { get; set; }
        /// <summary>
        /// 獲取或者設(shè)置數(shù)據(jù)的結(jié)果。
        /// </summary>
        public TResult? DataResult { get; set; }
    }

到此這篇關(guān)于在 Net7.0 環(huán)境下使用 RestSharp 發(fā)送 Http(FromBody和FromForm)請(qǐng)求的文章就介紹到這了,更多相關(guān)RestSharp 發(fā)送 Http請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論