使用FiddlerCore来测试WebAPI
大家在调试Web相关的API时,经常会用Fiddler来查看相关的请求,以及返回结果。当然你也可以尝试修改或者重复你的请求信息。本文主要介绍如何使用代码来实现fiddler的功能。
Fiddler Core API
Fiddler Core几乎实现了你能用fiddler做的所有功能。直接在NuGet上搜索FiddlerCore即可下载FiddlerCore的.Net API。
开启Fiddler Application
使用下面的代码来开启FiddlerApplication
FiddlerApplication.Startup(9898, FiddlerCoreStartupFlags.Default);
执行后,fiddler会运行一个http代理服务器,你可以使用FiddlerCoreStartupFlags.RegisterAsSystemProxy 来把这个代理服务器指定为系统代理,这样就可以监听到本机所有的http请求。
当程序结束的时候,记得使用下面的语句来关闭代理。
FiddlerApplication.Shutdown();
捕获HttpRequest/HttpResponse
开启了Fiddler Application之后,Fiddler在捕获Request/Response的时候会触发下面这两个事件,你只需要定义事件来实现如何处理捕获到的请求即可。
//
// Summary:
// This event fires when a client request is received by Fiddler
public static event SessionStateHandler BeforeRequest;
//
// Summary:
// This event fires when a server response is received by Fiddler
public static event SessionStateHandler BeforeResponse;
安装证书
那么如何捕获https协议的页面呢?众所周知,https通过通信证书来实现了服务器端和客户端的加密,避免通信过程被监听。Fiddler通过中间人的方式来实现https协议的捕获,所谓中间人就是Fiddler注入到应用程序和服务器的中间,fiddler相对于服务器扮演客户端的角色,相对于客户端扮演服务器的角色,既然fiddler需要扮演服务器的角色,就需要一个证书,并且你的客户端需要信任Fiddler的证书。我们以中国银行的网站为例:
不开启Fiddler登陆网银时,证书信息为:
开启Fiddler登陆网银后证书信息为:
由于我的机器已经信任过Fiddler的证书,我们可以发现,在开启了Fiddler后,和中行网银的通信证书变为了:DO_NOT_TRUST_FiddlerRoot。如果使用FiddlerCore,我们同样需要信任这个证书,相关的代码如下:
public static bool InstallCertificate()
{if (!CertMaker.rootCertExists()){if (!CertMaker.createRootCert())return false;if (!CertMaker.trustRootCert())return false;}return true;
}
开始捕获
使用这种方式,可以在不改变你现有代码的情况下,测试你的API返回结果是否正确。下面的例子是一个用FiddlerCoreAPI来测试SharePointOnline认证是否通过的例子。
using Fiddler;
using Microsoft.SharePoint.Client;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Security;
using System.Text;
using System.Threading.Tasks;namespace FiddlerCoreTest
{class Program{static void Main(string[] args){ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => true;FiddlerApplication.BeforeRequest += FiddlerApplication_BeforeRequest;FiddlerApplication.BeforeResponse += FiddlerApplication_BeforeResponse;FiddlerApplication.Startup(9898, FiddlerCoreStartupFlags.Default | FiddlerCoreStartupFlags.RegisterAsSystemProxy);try{ClientContext context = new ClientContext("https://domain.sharepoint.com");SecureString se = new SecureString();foreach (var cc in "password"){se.AppendChar(cc);}var cre = new SharePointOnlineCredentials("user@domain.onmicrosoft.com", se);var cookie = cre.GetAuthenticationCookie(new Uri("https://domain.sharepoint.com"));}catch (Exception e){}FiddlerApplication.Shutdown();Console.ReadLine();}static void FiddlerApplication_BeforeResponse(Session oSession){//想如何改写Response信息在这里随意发挥了Console.WriteLine("BeforeResponse: {0}", oSession.responseCode);}static void FiddlerApplication_BeforeRequest(Session oSession){//想如何改写Request信息在这里随意发挥了Console.WriteLine("BeforeRequest: {0}, {1}", oSession.fullUrl, oSession.responseCode);}}
}
作者:独上高楼
出处:http://www.cnblogs.com/myprogram/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载于:https://www.cnblogs.com/myprogram/p/5042562.html
使用FiddlerCore来测试WebAPI相关推荐
- 【转】使用FiddlerCore来测试WebAPI
大家在调试Web相关的API时,经常会用Fiddler来查看相关的请求,以及返回结果.当然你也可以尝试修改或者重复发送你的请求信息.本文主要介绍如何使用代码来实现fiddler的功能. Fiddler ...
- linux webapi测试,Webapi管理和性能测试工具WebBenchmark
WebBenchmark是一款基于开源通讯组件Beetlex扩展的Webapi管理和性能测试工具,在传统工具中一般管理工具缺乏性能压测能力或有性能测试的缺少管理功能:WebBenchmark的设计目标 ...
- Webapi测试工具WebBenchmark v1.3发布
这个版本更新的内容是统一使用BeetleX的Web SPA 插件作为服务的基础支持功能方便后期功能扩展,修复线程池配置太小引起的测试问题,修复统计显示的BUG. 安装 工具提供win64和linux6 ...
- Webapi管理和性能测试工具WebBenchmark
WebBenchmark是一款基于开源通讯组件Beetlex扩展的Webapi管理和性能测试工具,在传统工具中一般管理工具缺乏性能压测能力或有性能压测的缺少管理功能:WebBenchmark的设计目标 ...
- WebApi网关之Bumblebee和Ocelot性能对比
Bumblebee是基于.net core 2.1开发的WebApi网关组件,由于Bumblebee所追求的轻量化和性能,所以它并没有像Ocelot那样从asp.net core上进行扩展:而是构建在 ...
- .NET Core系列 :4 测试
2016.6.27 微软已经正式发布了.NET Core 1.0 RTM,但是工具链还是预览版,同样的大量的开源测试库也都是至少发布了Alpha测试版支持.NET Core, 这篇文章 The Sta ...
- 【转】.net异步性能测试(包括ASP.NET MVC WebAPI异步方法)
很久没有写博客了,今年做的产品公司这两天刚刚开了发布会,稍微清闲下来,想想我们做的产品还有没有性能优化空间,于是想到了.Net的异步可以优化性能,但到底能够提升多大的比例呢?恰好有一个朋友正在做各种语 ...
- WebApi系列~自主宿主HttpSelfHost的实现
回到目录 宿主一词我们不会陌生,它可以看作是一个基础设施,它为一些服务和功能提供最底层的支持,如你的web应用程序可以运行在iis或者apache上,而这两个东西就是web应用程序的宿主,而今天说的自 ...
- 自行实现高性能MVC
wcf虽然功能多.扩展性强但是也面临配置忒多,而且restful的功能相当怪异,并且目前没法移植.asp.net core虽然支持webapi,但是功能也相对繁多.配置复杂.就没有一个能让码农们安安心 ...
最新文章
- android界面布局题,【填空题】Android 系统中, 用于定义布局显示在界面上的风格。...
- Oracle SQL Developer语言设置
- 分析nat穿越(未完成)
- (11) Hibernate 缓存机制
- 关于LR录制时不能自动启动IE浏览器的解决方法
- 2019入门级云主机选型测试报告
- Linux Kickstart无人值守安装
- zookeeper 分布式锁_详细讲解!从秒杀聊到ZooKeeper分布式锁
- 前端实现成绩管理系统
- Matlab之聚类分析
- android10存储空间不足怎么清理,手机磁盘空间不足怎么清理?详细介绍
- 计算机开机只显示,电脑开机黑屏只显示光标怎么办?来看看几种原因分析及解决方法!...
- 注册一个域名需要多少钱_域名注册需要多少钱?购买一个域名需要多少钱
- Loading plugin Fxp\Composer\AssetPlugin\FxpAssetPlugin PHP Fatal error: Uncaught Error: Call to unde
- 【DSP】【第一篇】开始DSP学习
- 信奥中的数学 数论篇 相关资料汇总(2022.07.07)
- 华为S/CE系列交换机stelnet示例(带外管理地址绑定vpn实现业务和管理平面的隔离)
- SAR成像系列:【5】合成孔径雷达(SAR)成像算法-距离多普勒(RD)算法(附Matlab代码)
- POI操作ppt图表完整示例演示
- bzoj2683:简单题(树状数组套CDQ分分治)
热门文章
- 受教黑金文档,再度优化兼容irq uart代码
- pom添加依赖后不报错但是代码依然缺少依赖
- Errors were encountered while processing 解决方法
- Spark API 详解(转)
- intellij中出現java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration解決方案
- Qt OpenGL 问题总结
- 我心目中未来的计算机200字,我心目中未来的计算机.doc
- 生效linux内核,Linux内核
- linux安装grub界面,系统安装: GRUB安装,配置及使用汇总
- ORA-12170: TNS:Connect timeout occurred