C# 调接口

上一个项目,需要mvc管理后台调接口项目,以便后期的重构扩展,调研后发现后台用的ajax请求,直接调接口可能会有跨域问题,最终在c#代码中实现了这个需求。

1,Ajax请求后台 将接口所需参数传入

2,模拟请求接口并返回json格式数据

3,将json数据反序列化

整体代码如下:

        public ActionResult Test(int id, int type)
        {
            var domain = CommonConst.ApiDomain;
            var fixedString = CommonConst.FixedString;
            var thisTimeValue = ((long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalMilliseconds).ToString();
            var tempList = new List<string>() { fixedString.ToLower(), thisTimeValue.ToLower(), "GetTestData".ToLower() };
            tempList.Sort();
            var valueSign = Encrypt.MD5(string.Join("", tempList));
            valueSign = valueSign.ToLower().Replace("-", "");

            string serviceAddress = domain + "/api/exam/GetTestData?id=" + id + "&type=" + type;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceAddress);
            request.Method = CommonConst.RequestMethod;
            request.ContentType = CommonConst.ContentType;
            request.Headers.Add("SignsValue", valueSign);
            request.Headers.Add("TimeStamp", thisTimeValue.ToLower());
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();
            StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);
            string retString = streamReader.ReadToEnd();
            streamReader.Close();
            responseStream.Close();
            var result = JsonConvert.DeserializeObject<TestViewModel.RootObject>(retString);

其中 1. SignsValue 和 TimeStamp 等请求头信息需要通过接口的具体规则来实现

   2.在反序列化的时候需要定义类来将接受到的json格式数据转化为model 即:JsonConvert.DeserializeObject<TestViewModel.RootObject>(retString);

定义 RootObject 类:

        public class RootObject
        {
            public string Msg { get; set; }
            public string Message { get; set; }
            public string ResultCode { get; set; }
            public Info Info { get; set; }
        }

Info 中的数据接口要跟接口的数据结构一致。

GetTestData

原文地址:https://www.cnblogs.com/teng-0802/p/10337358.html

时间: 2024-10-16 01:59:11

C# 调接口的相关文章

批量操作取值调接口

批量操作取值调接口 selectionChange(val) { var arr = [];//数组置空 if(val.length) {/////////////切记,判断取值数组的的长度 for(var i = 0; i < val.length; i++) { arr.push(val[i].id)//追加你需要的id this.selectedId = arr } this.selectShow = true } else { this.selectedId = []//切记没值的时候还

HTTP Status 415 – Unsupported Media Type(使用@RequestBody后postman调接口报错)

1.问题描述:使用springMVC框架后,添加数据接口中,入参对象没使用@RequestBody注解,造成postman发起post请求, from-data可以调通接口,但是raw调不通接口,然后我用了SpringMVC @ResponseBody 注解,调接口显示415错误处理. 处理: springmvc添加配置.注解: 1 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHan

使用axios+vuex来调接口使数据随处可用

首先安装:axios和vuex这里推荐使用:vue ui来以插件的形式安装axios,注意vue ui是脚手架3.0才开始有这个,vuex的安装我就不在介绍了请自行安装.安装好整个项目后包括axios和vuex,这个时候我们再对项目的目录简单的改改下: 第一步:在src目录下新建文件夹stores目录,再建目录modules(存放自己创建的文件)和同级文件getters.js.第二步:把main.js同层级下的store.js移到stores目录里,把名称改成index.js import Vu

Java--回调接口

回调接口: 我们都知道,一个线程在运行中,遇到一个耗时操作(方法)时,会开启另外一个线程,即所谓 -- 异步 .java中 回调接口 也必然应用与异步加载. 所谓 回调接口 ,也就是线程运行中 遇到一个耗时操作(方法),开启一个子线程,在子线程中将该操作(方法)交给 另外一个对象去完成.而被交付完成任务的对象,执行操作完毕之后,需要把信息回传给原对象.这种时候就必须使用 回调接口 技术.也就是网上流传的方法,A 调用 B 的 c 方法(为了获取 (所需要知道的) 信息),B 再反过来调用 A 的

fidder 调接口 的 小常识

fidder   调试接口 进入fidder页面   点击 composer

php调接口

浏览器直接访问接口时会弹出账号密码框 当用程序调用时需要加入    curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); 链接要使用双引号,包含的双引号要用转译,不能用单引号代替. 代码如下 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT

使用 curl 调接口时需要注意事项

1.在调用时需要对各个参数进行 urlencode: 2.注意 header 参数,首先我们使用 postman 工具调用一下这个接口,并获取其 request 的 header 将有用的 header 用起来(多试几次): 3.注意不同版本的 php 文件上传是需要的配置. 代码分析 /**  * 注意:1.参数除了文件都要 urlencode 一下:2.注意header:3.curl_file_create 函数  * @param $File  文件路径  * @param int $Le

通过http实现调接口,实现将远程的数据库数据插入到本地的数据当中的操作。

今天同事给我一个接口,让我实现将远程的数据的信息通过http的形式获取到插入到本地的数据库当中. (1)简单的方法是通过ajax传递参数,然后在后台请求数据. (2)通过http请求获取到数据,然后插入到插入到本地的数据库当中. 实现思路(第一种也可以但是如果使用第一种的话,就需要和页面进行交互,最后选择了第二中方式) (1)通过写http获取值. (2)解析json格式的数据 (3)然后连接数据库实现数据的插入操作. 业务代码如下: package com.message.transfer;

和app提供接口调接口那些事

有一个文档是很有必要的:基本内容 要有比如:名称,http方式,参数, 返回值 返回数据类型是JSON,还是 XML 对于返回值注意一个地方''[] , array(), null  这在php看来都是一个类型的比如empty; 然而由于android,ios 所用是强类型语言所以 这些类型在他们看来有着本质的天大的区别,所以要和app人员约定好,要么统一''代替其他类型,要么在文档中明确的注释,如数组有数据当然是数组,没数据是''还是[] php 中的array 特别不是数字键,是字符键的在