FiddlerCoreAPI开发(葡京网上娱乐场一)源码分析

阅读了弹指间网上关于alter
table添加表约束的资料,学习下,然后供本身事后采纳。

1.前言

前一段时间想行使fiddlercore截取本地HTTPS的流量做一些解析,根据样例代码的注释学习了一晃,没搞明白怎么落到实处,后来又在网上查了些资料,对HTTPS的拍卖提及很少,都没有缓解作者的标题,首固然HTTPS证书的标题,索性本身研究了弹指间,终于化解了难题。笔者会在下篇小说中享用下自家的思绪,本篇作品先简单分析下fiddlercore自带样例的代码,帮忙刚接触fiddlercore的人火速入门,假设有说的有万分态的地点,欢迎批评指正。

单独供本身行使。。。

2.源码分析

率先从官网下载FiddlerCoreAPI
https://www.telerik.com/purchase/fiddlercore

下载下来是一个安装文件,解压后有demo和FiddlerCoreAPI库,打开样例代码工程,开端分析。

从主函数开端。

List<Fiddler.Session> oAllSessions = new List<Fiddler.Session>();

概念了二个fiddler的Session类的List,里面存放的是客户端和服务端的音讯。

Fiddler.FiddlerApplication.SetAppDisplayName("FiddlerCoreDemoApp");

取名本身的应用程序。

Fiddler.FiddlerApplication.OnNotification += delegate(object sender, NotificationEventArgs oNEA) { Console.WriteLine("** NotifyUser: " + oNEA.NotifyString); };
Fiddler.FiddlerApplication.Log.OnLogString += delegate(object sender, LogEventArgs oLEA) { Console.WriteLine("** LogString: " + oLEA.LogString); };

那两句,第2句绑定了用户通报事件的函数,具体如什么日期候触发没仔细研商,第③句绑定了FiddlerApplication.Log触发的风云(FiddlerCore本身的日志系统),后边打字与印刷内容都会用到,总而言之那两句正是把内容打字与印刷在控制台上。

Fiddler.FiddlerApplication.BeforeRequest += delegate(Fiddler.Session oS)
{
    // Console.WriteLine("Before request for:\t" + oS.fullUrl);
    oS.bBufferResponse = false;
    Monitor.Enter(oAllSessions);
    oAllSessions.Add(oS);
    Monitor.Exit(oAllSessions);

    if ((oS.oRequest.pipeClient.LocalPort == iSecureEndpointPort) && (oS.hostname == sSecureEndpointHostname))
    {
        oS.utilCreateResponseAndBypassServer();
        oS.oResponse.headers.SetStatus(200, "Ok");
        oS.oResponse["Content-Type"] = "text/html; charset=UTF-8";
        oS.oResponse["Cache-Control"] = "private, max-age=0";
        oS.utilSetResponseBody("<html><body>Request for httpS://" + sSecureEndpointHostname + ":" + iSecureEndpointPort.ToString() + " received. Your request was:<br /><plaintext>" + oS.oRequest.headers.ToString());
    }
};

BeforeRequest,顾名思义,正是在客户端发送请求后拦截之,在此函数中得以获得甚至修改请求的情节。

oS.fullUrl为呼吁的UQashqaiL。

bBufferResponse那些特性,要设置成true才能够修改服务器响应的始末。

接下去的if判断,是1个例证,即便您拜访https://localhost:7777,他会拦截你的请求,并构造响应报文返回给你,服务端不会收到该请求。

Fiddler.FiddlerApplication.Startup(iPort, oFCSF);

打开FiddlerCore在钦定端口的监听。

oSecureEndpoint = FiddlerApplication.CreateProxyEndpoint(iSecureEndpointPort, true, sSecureEndpointHostname);

创建在钦定端口的HTTPS的监听,那些函数下篇文章中还会说到。

迄今结束,这一个样例的关键代码就分析完了,它完成了简要的http请求截获和响应替换,剩余的代码都以些与用户的交互,那里不再赘述。

 

3.注意

后边代码执行完后,一定要调用Shutdown()函数关闭FiddlerCore应用,不然会促成浏览器照旧通过Fiddler代理,上连发网。

Fiddler.FiddlerApplication.Shutdown();

在注解管理器中得以见见FiddlerCore安装了本人的证书。

葡京网上娱乐场 1

读书样例代码的诠释很有救助,还有FiddlerCore的帮忙文书档案,里面各类函数的法力说的很详细。

 

总结alter table ### add
constraint ## 使用格局

添加表约束

 

首先看下alter
table的概念(百度健全):

Alter
table,互联网程序及编制程序中所用的术语。通过变更、添加、除去列和封锁,大概通过启用或剥夺约束和触发器来更改表的概念。

 

数据库SQL语言的改动语句,能够用来修改基本表,其相似代表格式为:

ALTER TABLE<表名>[改变格局]

改变情势:

· 加一个栏位: ADD “栏位 1” “栏位 1 资料体系”

· 删去四个栏位: DROP “栏位 1”

· 改变栏位名称: CHANGE “原本栏位名” “新栏位名” “新栏位名资料连串”

· 改变栏位的材质系列: MODIFY “栏位 1” “新资料种类”

由上能够阅览,修改基本表提供如下八种修章:

(1)ADD格局:用于扩展新列和完整性约束,列的定义格局同CREARE
TABLE语句中的列定义形式一样,其语法格式:

ALTE酷威 TABLE <表名> ADD
<列定义>|<完整性约束>。由于选择此措施中扩充的新列自动填充NULL值,所以不能够为扩展的新列钦赐NOT
NULL约束。

(2)DROP格局:用于删除钦命的完整性约束原则,或删钦点的列,其语法格式为:

ALTER TABLE<表名> DROP [<完整性约束名>]

ALTER TABLE<表名> DROP COLUMN <列名>

注释:某些数据库系统不允许那种在数据库表中删除列的主意
(DROP COLUMN <列名>)。

(3)CHANGE情势,用于修改有些列,其语法格式:

ALTER TABLE [表名] CHANGE <原列名> TO
<新列名><新列的数据类型>

(4)MODIFY方式,用于修改有个别列的数据类型,其语法格式:

ALTER TABLE [表名] MODIFY [列名] [数据类型]

 

先创设的库个表 如下 : 下边示例用到表结构

create database Text_DB

go

use Text_DB

go

create table Teacher

(

TeaId int not null ,

TeaName varchar(20) not null,

TeaAge  int ,

TeaAddress  varchar(50)

)–为了更直观的阅览效果 那里就先不添加约束

 

 

一.Alter
重中之重意义针对是给曾经创办的表进行添加和改动删除约束 的操作

1.给曾经创办的表添加约束

   分为二种艺术,一种是在开创约束 并同时给所创约束定义3个名字
 那样能够再度展开操作,比如删除时候要用到

   另一种方法是直接成立约束 不命名的,然而再一次操作时候是不便民的

第一种:  

Alter table 表名 add constraint 约束 字 约束类型(列名)

例:

—–添加封锁(命名)———–

alter table Teacher add constraint PK_1 primary key (TeaId)–主键约束

alter table Teacher add constraint UN_1 unique(TeaName)–唯一约束

alter table Teacher add constraint CK_1 check (TeaAge>0)–范围约束

alter table Teacher add constraint DE_1 default ‘123’ for TeaAddress –暗许约束

–外键约束,那里就不一一举例了,语法如下

alter table 表名 add constraint 约束名  foreign key(关联字段) references 主表(关联字段)

 

第二种:

  Alter table 表名 add 约束(列名)

例: 分别给 Teacher表中添加 主键 唯一 和限制约束

  alter table Teacher add primary key (TeaId)–主键

alter table Teacher add unique(TeaName)–唯一

alter table Teacher add check (TeaAge>0)–范围约束

alter table Teacher add default ‘123’ for TeaAddress –暗中同意约束

alter table 表名 add foreign key(列名) references 主表(列名)–外键

 

2.剔除约束: 语法

 alter table 表名 drop constraint 约束名–删除约束

例:(删除Teacher表中的约束)

  alter table Teacher drop constraint PK_1 –删除主键约束

alter table Teacher drop constraint UN_1 –删除唯一约束

alter table Teacher drop constraint CK_1 –删除范围约束

alter table Teacher drop constraint DE_1 –删除私下认可约束

 

 

 

二. Alter table 用法
 针对表结构进行改动,比如添加列删除列等等…

   1.添加列 语法

 Alter table 表名 ADD 列名  数据类型

例: (给Teacher 表中添加一列 notes
数据类型为varchar(200))

alter table Teacher add notes varchar(200)

2.刨除表中的列 语法

  Alter table 表名 drop column 列名

例:(删除表中的notes列)

alter table Teacher drop column notes

3.改动某一列中的数据类型语法

Alter table 表名 alter column 列名 数据类型

例:(将Teacher
表中的notes列更改为int类型)

alter table Teacher alter column notes int

 

ALTECRUISER TABLE ADD扩大多个字段外键约束

/* 创建表 及设置 主键 */

 CREATE TABLE TABLE_USER

(USER_ID INT IDENTITY(1,1) NOT NULL,

 USER_NAME NVARCHAR(40) NOT NULL,

 LAST_UPDATED_BY    NVARCHAR(15),

 LAST_UPDATED_DATE    DATETIME,

CONSTRAINT USER_PK PRIMARY KEY (USER_ID)

);

/*ALTE逍客 TABLE 扩展多少个字段 */

ALTER TABLE TABLE_USER ADD 

 DEPARTMENT_ID INT NOT NULL,COMPANY_ID INT NOT NULL,TEMP_COL
NVARCHAR(10);

/*ALTECRUISER TABLE 扩充七个外键 */

ALTER TABLE TABLE_USER ADD 

CONSTRAINT USER_DEPARTMENT_FK FOREIGN KEY(DEPARTMENT_ID) REFERENCES
TABLE_DEPARTMENT(DEPARTMENT_ID) ,CONSTRAINT USER_COMPANY_FK FOREIGN
KEY(COMPANY_ID) REFERENCES TABLE_COMPANY(COMPANY_ID)  ;

/*ALTE揽胜极光 TABLE 删除字段 */

ALTER TABLE TABLE_USER DROP COLUMN TEMP_COL;

 

–删除约束 –先查出约束名 EXEC sys.sp_helpconstraint @objname =
N’bulkinserttest’ –表名 ALTER TABLE dbo.bulkinserttest DROP CONSTRAINT
ck_bulkinsert

例子:

向表中追加3个 varchar 列:

ALTER TABLE distributors ADD address varchar(30);

从表中删除一个字段:

ALTER TABLE distributors DROP COLUMN address RESTRICT;

在二个操作中期维修改八个现有字段的类型:

ALTER TABLE distributors

ALTER COLUMN address TYPE varchar(80),

ALTER COLUMN name TYPE varchar(100);

利用三个 USING 子句, 把四个分包
UNIX 时间戳的 integer 字段转化成 timestamp with
time zone:

ALTER TABLE foo

ALTER COLUMN foo_timestamp TYPE timestamp with time zone

USING

timestamp with time zone ‘epoch’ + foo_timestamp * interval ‘1
second’;

对现存字段改名:

ALTER TABLE distributors RENAME COLUMN address TO city;

更改现存表的名字:

ALTER TABLE distributors RENAME TO suppliers;

给二个字段扩大贰个非空约束:

ALTER TABLE distributors ALTER COLUMN street SET NOT NULL;

从八个字段里删除三个非空约束:

ALTER TABLE distributors ALTER COLUMN street DROP NOT NULL;

给多少个表扩充八个反省约束:

ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK
(char_length(zipcode) = 5);

去除3个表和它的具备子表的反省约束:

ALTER TABLE distributors DROP CONSTRAINT zipchk;

向表中扩张二个外键约束:

ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address)
REFERENCES addresses(address) MATCH FULL;

给表扩充2个(多字段)唯一约束

ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE
(dist_id, zipcode);

给一个表扩展1个机关命名的主键约束,要注意的是贰个表只好有1个主键:

ALTER TABLE distributors ADD PRIMARY KEY (dist_id);

把表移动到其余2个表空间

ALTER TABLE distributors SET TABLESPACE fasttablespace;

 

 

1. 主键约束

要对一个列加主键约束的话,那列就无法不要满意的标准正是非空。因为主键约束:便是对1个列进行了约束,约束为(非空、不另行)。

【格式】alter table 表格名称
add constraint 约束名称 扩展的牢笼类型 (列名)

事例:要对一个列加主键,列名为id,表名为emp

alter table emp add constraint ppp primary key (id)

 

2. check约束

固然给一列的多少开始展览了限定

【格式】alter table 表名称 add
constraint 约束名称 扩充的约束类型 (列名)

事例:年龄列的多少都要压倒20,表名(emp)
列名(age)

alter table emp add constraint xxx check(age>20)

某一列(sex)取值只好为“男”和“女”的羁绊表达式:

ALTE帕杰罗 TABLE 表的称谓 ADD CONSTRAINT 约束的称谓 CHECK (sex in
(‘男’,’女’))

 

3. unique约束

如此的羁绊正是给列的数码追加的不另行的牢笼类型

【格式】alter table 表名 add
constraint 约束名称 约束类型(列名)

事例:给ename列加个unique,让ename列的数目不另行

alter table emp add constraint qwe unique(ename)

 

4. 默许约束

趣味很简短,正是让此列的数据私下认可为一定的数量

【格式】alter table 表名称 add
constraint 约束名称 约束类型 暗中同意值 for 列名

事例:emp表中的gongzi列私下认可为一千0

alter table emp add constraint jfsd default 10000 for gongzi

 

5. 外键约束

其一有点难精晓了,外键其实就是引用

因为主键达成了实体的完整性,外键达成了引用的完整性,应用完整性规定,所引用的数额必须存在!其实便是个引用。

【格式】alter table 表名 add
constraint 约束名称 约束类型 (列名) references 被引用的表名称 (列名)

例子:

2个表名称叫dept 里面有2列多少
一列是ID一列是ENAME

id:表示产品的号码

ename:表示产品的称呼

其它一个报表名称是emp
里面有2列数码,一列是ID 一列是DID

id:表示用户号

did:表示购买的成品号

要让emp表中的did列去引用dept表中的id

能够用上边包车型地铁艺术

alter table emp add constraint jfkdsj foreign key (did) references dept
(id)