当前位置: 代码网 > it编程>编程语言>Asp.net > 在 Net7.0 环境下如何使用 RestSharp 发送 Http(FromBody和FromForm)请求

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

2024年06月02日 Asp.net 我要评论
一、简介最近,在做一个数据传输的服务,我在一个worker service里面需要访问 webapi 接口,并传输数据,也可以提交数据。由于第一次使用 restsharp 发送请求,也遇到了很多问题,

一、简介

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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com