上一个项目,需要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(, , , , , , )).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

C# 调接口的更多相关文章

  1. 微信小程序调接口常见问题解决方法

    第一次调接口时遇见的bug. 注意:接口的域名不能使用 IP 地址或 localhost,且不能带端口号: 微信小程序如何调接口? wx.request({ url: 'http://miniapp/ ...

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

    1.问题描述:使用springMVC框架后,添加数据接口中,入参对象没使用@RequestBody注解,造成postman发起post请求, from-data可以调通接口,但是raw调不通接口,然后 ...

  3. PHP post调接口代码

    PHP post调接口代码 /** * $url:接口地址 * $data:数组参数 **/ function postData($url, $data) { $ch = curl_init (); ...

  4. bash: express: command not found及vue连接数据库调接口

    今天在使用express -e . 的命令时,cmd给我报了一段不识别的错误: bash: express: command not found ,在网上查了一下,有人指出是express4的版本将命 ...

  5. Java Springboot webSocket简单实现,调接口推送消息到客户端socket

    Java Springboot webSocket简单实现,调接口推送消息到客户端socket 后台一般作为webSocket服务器,前台作为client.真实场景可能是后台程序在运行时(满足一定条件 ...

  6. 老铁,告别postman,用pycharm来调接口,顺便把接口脚本也写了

    最近,一位同事在用postman调涉及到依赖的接口的时候 postman设置了环境变量,但是老是获取不到依赖接口返回的值,至于的啥原因呢,@#¥%……&*()! 其实,用pycharm一样可以 ...

  7. php调接口

    浏览器直接访问接口时会弹出账号密码框 当用程序调用时需要加入    curl_setopt($ch, CURLOPT_USERPWD, "$username:$password") ...

  8. fidder 调接口 的 小常识

    fidder   调试接口 进入fidder页面   点击 composer Content-Type: application/x-www-form-urlencoded; charset=UTF- ...

  9. Java--回调接口

    回调接口: 我们都知道,一个线程在运行中,遇到一个耗时操作(方法)时,会开启另外一个线程,即所谓 -- 异步 .java中 回调接口 也必然应用与异步加载. 所谓 回调接口 ,也就是线程运行中 遇到一 ...

随机推荐

  1. codeforce 977 F. Consecutive Subsequence

    F. Consecutive Subsequence time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  2. 普及组2008NOIP 排座椅(贪心+排序)

    排座椅 时间限制: 1 Sec  内存限制: 50 MB提交: 4  解决: 3[提交][状态][讨论版][命题人:外部导入] 题目描述 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任 ...

  3. HBuilder使用技巧

    ctrl+ Tab  切换 ctrl + shift + D 查找所写的函数

  4. S3C2440开发环境搭建(Ubuntu)

    我的操作系统是 Ubuntu 1404.可以使用下面的命令查看系统的版本: cat /etc/issue 安装.配置.启动 ftp 服务 sudo apt-get install vsftpd  修改 ...

  5. web开发 那些年基于Redis的Provider库

    因为session基于本地cache,以前我们自己写分布式缓存,或者数据库存储,或者cookie加密存储,来保存用户状态信息,但较少的直接通过创建一个继承 SessionStateStoreProvi ...

  6. 不同浏览器对于html5 audio标签和音频格式的兼容性

    音频格式 Chrome Firefox IE9 Opera Safari OGG 支持 支持 支持 支持 不支持 MP3 支持 不支持 支持 不支持 支持 WAV 不支持 支持 不支持 支持 不支持 ...

  7. 用cascade删除有约束的表或记录

    删除有约束的表 Drop table TERMPRO_RULE_ROUTE_TYPE cascade constraints:

  8. ulimit open files linux打开文件数设置验证

    #include <stdio.h> #include <sys/types.h> #include <fcntl.h> #include <stdlib.h ...

  9. ffmpeg个人翻译文档1-8<转>

    [个人翻译]ffmpeg文档1 (2008-08-26 09:39:15) 转载 标签: 杂谈 分类: 翻译文档 指导1:制作屏幕录像 源代码:tutorial01.c 概要   电影文件有很多基本的 ...

  10. Lyx/LaTeX笔记04---插入伪代码

    1 可用的宏包 常用的排版伪代码包有clrscode, algorithm, algorithmic, algorithmicx, algorithm2e 2 clrscode clrscode是著名 ...