Asp.net mvc web api 在项目中的实际应用
Asp.net mvc web api 在项目中的实际应用
前言:以下只是记录本人在项目中的应用,而web api在数据传输方面有多种实现方式,具体可根据实际情况而定!
1:数据传输前的加密,以下用到 微软自带的 Rijndael 类(关于Rijndael 的更多信息请参见MSDN),以下是使用32位密钥加16对称算法密钥向量,代码如下:
//简单定义一个实体类:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://webapi.test.com");
//模拟传输数据:
User entity = new User()
{
Id = 1,
Age = 2,
Name = "hello"
};
string jsonStr = JsonConvert.SerializeObject(entity);
//对数据进行加密:
Rijndael r = Rijndael.Create();
//初始化16位秘钥向量:
r.IV = Encoding.UTF8.GetBytes("快乐加快乐,");
//32位秘钥向量:
string key = "070417fa0e95458684116314a2c7cf18"; //Guid.NewGuid().ToString().Replace("-", "");
r.Key = Encoding.UTF8.GetBytes(key);
byte[] es = new byte[] { };
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cStream = new CryptoStream(ms, r.CreateEncryptor(), CryptoStreamMode.Write))
{
using (StreamWriter sw = new StreamWriter(cStream))
{
sw.WriteLine(jsonStr);
}
}
es = ms.ToArray();
}
2:利用httpclient传输数据,代码如下:
//推送数据:
ByteArrayContent content = new ByteArrayContent(es);
Task.Factory.StartNew(() =>
{
//requestURL根据实际配置的路由决定:
var res = client.PostAsync("webapi/GetData", content).Result;
});
return View();
3:接收httpclient推送的数据并进行解密,代码如下:
[HttpPost]
public async Task<string> GetData()
{
byte[] buffer = await Request.Content.ReadAsByteArrayAsync();
//解密:
Rijndael dr = Rijndael.Create();
//初始化16位秘钥向量:
string key = "070417fa0e95458684116314a2c7cf18";
dr.IV = Encoding.UTF8.GetBytes("快乐加快乐,");
//32位秘钥:
dr.Key = Encoding.UTF8.GetBytes(key);
string dstr = string.Empty;
using (MemoryStream ms = new MemoryStream(buffer, 0, buffer.Length))
{
using (CryptoStream cStream = new CryptoStream(ms, dr.CreateDecryptor(), CryptoStreamMode.Read))
{
using (StreamReader sr = new StreamReader(cStream))
{
dstr = sr.ReadLine();
}
}
}
//解密成功后反序列化数据:
User model = JsonConvert.DeserializeObject<User>(dstr);
//........其它处理
return "ok";
}
Asp.net mvc web api 在项目中的实际应用的更多相关文章
- ASP.NET MVC Web API For APP
近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过在浏览器中使用 JavaScr ...
- [译]ABP框架使用AngularJs,ASP.NET MVC,Web API和EntityFramework构建N层架构的SPA应用程序
本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建 ...
- 【转载】ASP.NET MVC Web API 学习笔记---联系人增删改查
本章节简单介绍一下使用ASP.NET MVC Web API 做增删改查.目前很多Http服务还是通过REST或者类似RESP的模型来进行数据操作的.下面我们通过创建一个简单的Web API来管理联系 ...
- 【转载】ASP.NET MVC Web API 学习笔记---第一个Web API程序
1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过 ...
- ASP.NET MVC Web API 学习笔记---第一个Web API程序
http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html GetListAll /api/Contact GetListBySex ...
- ABP 教程文档 1-1 手把手引进门之 AngularJs, ASP.NET MVC, Web API 和 EntityFramework(官方教程翻译版 版本3.2.5)含学习资料
本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 转载请注明出处:http://www.cnblogs.com/yabu007/ 谢谢 官方文档分四部分 一. 教程文档 二.ABP 框架 三. ...
- ASP.NET MVC Web API 学习笔记---Web API概述及程序示例
1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过 ...
- ASP.NET MVC Web API 学习笔记---联系人增删改查
本章节简单介绍一下使用ASP.NET MVC Web API 做增删改查. 目前很多Http服务还是通过REST或者类似RESP的模型来进行数据操作的. 下面我们通过创建一个简单的Web API来管理 ...
- ASP.NET MVC Web API 学习笔记---第一个Web API程序【转】
http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html 1. Web API简单说明 近来很多大型的平台都公开了Web API. ...
随机推荐
- Android系统中的6种模式
Android系统中的6种模式 1:一般启动模式(normal mode): 功能是正常启动手机,方法为关机状态下按电源键启动. 2:安全模式(safe mode): 此模式和正常启动一样 ...
- UVa 2197 & 拆点分环费用流
题意: 给你一个带权有向图,选择一些边组成许多没有公共边的环,使每个点都在k个环上,要求代价最小. SOL: 现在已经养成了这种习惯,偏题怪题都往网络流上想... 怎么做这题呢... 对我们看到每个点 ...
- HDU 1072(记忆化BFS)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1072 题目大意:走迷宫.走到装置点重置时间,到达任一点时的时间不能为0,可以走重复路,求出迷宫最短时 ...
- BZOJ3212 Pku3468 A Simple Problem with Integers 题解
题目大意: 一个数列,有两个操作:1.修改操作,将一段区间内的数加上c:2.查询操作,查询一段区间内的数的和. 思路: 线段树裸题,区间修改.区间查询,维护和以及加上的数,由于无序,不需要向下推标记, ...
- 如何提升 service 等级,不被kill(整合)
(1)在应用退到后台后,另起一个只有1像素的页面停留在桌面上,让自己保持前台状态,保护自己不被后台清理工具杀死. (2)用Foreground Service. 参考地址:Android Servic ...
- Nginx+Lua 积累
1.解析16进制编码的中文参数 local encodeStr = "%E6%B0%94" local decodeStr = ""; , #encodeStr ...
- 《从陷阱中学习C/C++》读书笔记
1.运算符优先级很容易引起问题,如a = 4<<1+1,由于<<的优先级低于+,故其执行过程为 a = 4<<(1+1); 常见的运算符优先关系:(具体参照博客) ...
- Android -- ProgressBar(进度条的使用)
我们在开发程序是经常会需要软件全屏显示.自定义标题(使用按钮等控件)和其他的需求,今天这一讲就是如何控制Android应用程序的窗体显示. requestWindowFeature可以设置的值有:(具 ...
- spring源码学习之路---环境搭建(一)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 最近已经开始了spring源 ...
- Linux_CentOS6.5安装vncserver实现图形化访问
一. 安装gnome图形化桌面 #yum groupinstall -y "X Window System" #yum groupinstall -y "Desktop& ...