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 在项目中的实际应用的更多相关文章

  1. ASP.NET MVC Web API For APP

    近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过在浏览器中使用 JavaScr ...

  2. [译]ABP框架使用AngularJs,ASP.NET MVC,Web API和EntityFramework构建N层架构的SPA应用程序

    本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建 ...

  3. 【转载】ASP.NET MVC Web API 学习笔记---联系人增删改查

    本章节简单介绍一下使用ASP.NET MVC Web API 做增删改查.目前很多Http服务还是通过REST或者类似RESP的模型来进行数据操作的.下面我们通过创建一个简单的Web API来管理联系 ...

  4. 【转载】ASP.NET MVC Web API 学习笔记---第一个Web API程序

    1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过 ...

  5. ASP.NET MVC Web API 学习笔记---第一个Web API程序

    http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html GetListAll /api/Contact GetListBySex ...

  6. ABP 教程文档 1-1 手把手引进门之 AngularJs, ASP.NET MVC, Web API 和 EntityFramework(官方教程翻译版 版本3.2.5)含学习资料

    本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 转载请注明出处:http://www.cnblogs.com/yabu007/  谢谢 官方文档分四部分 一. 教程文档 二.ABP 框架 三. ...

  7. ASP.NET MVC Web API 学习笔记---Web API概述及程序示例

    1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过 ...

  8. ASP.NET MVC Web API 学习笔记---联系人增删改查

    本章节简单介绍一下使用ASP.NET MVC Web API 做增删改查. 目前很多Http服务还是通过REST或者类似RESP的模型来进行数据操作的. 下面我们通过创建一个简单的Web API来管理 ...

  9. ASP.NET MVC Web API 学习笔记---第一个Web API程序【转】

    http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html 1. Web API简单说明 近来很多大型的平台都公开了Web API. ...

随机推荐

  1. ASP.NET Global.asax详解

    最近在研究bbsmax的代码,但是一直不知道入口在哪里,然后就对各个文件分析了,然后终于在对global.asax文件查看的时候看到Application_BeginRequest才明白入口,所以现在 ...

  2. Redis Java API

    package cn.ac.iscas.pebble.dc.redispool; import java.io.File; import java.io.FileOutputStream; impor ...

  3. POJ 2407 (欧拉函数)

    题目链接: http://poj.org/problem?id=2407 题目大意:求小于n且与n互质的正整数个数. 解题思路: 欧拉函数=小于n且与n互质的正整数个数. 公式=n*(1-1/P1)* ...

  4. ACM 谁获得了最高奖学金

    谁获得了最高奖学金 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述     某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: ...

  5. NOIp 2014 #2 联合权值 Label:图论 !!!未AC

    题目描述 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i ,每条边的长度均为1 .图上两点( u , v ) 的距离定义为u 点到v 点的最短距离. ...

  6. Codeforces Round #210 (Div. 2) C. Levko and Array Recovery

    题目链接 线段树的逆过程,想了老一会,然后发现应该是包含区间对存在有影响,就不知怎么做了...然后尚大神,说,So easy,你要倒着来,然后再正着来,判断是不是合法就行了.然后我乱写了写,就过了.数 ...

  7. git 常用

    1. 打印 git 的 log 日志:git log --after="2016-05-05" --no-merges 2. 可以通过在本地建立分支,来添加自己的注释.上传公司的代 ...

  8. SDL 五子棋游戏

    http://www.jb51.net/article/79271.htm 1.定义窗口大小,棋盘大小 SDL_GetWindowSize()读取窗口大小, 由于棋盘是15*15格局,上下留白一行,在 ...

  9. 淘宝前端工程师:国内WEB前端开发十日谈

    一直想写这篇"十日谈",聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是" ...

  10. Oracle中建表和指定表空间

    --建一个表create table HH2( tid number primary key ,--主键设定 tname varchar2(20) ); --删除表drop table HH; --表 ...