日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用FiddlerCore来测试WebAPI

發(fā)布時(shí)間:2023/12/19 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用FiddlerCore来测试WebAPI 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

大家在調(diào)試Web相關(guān)的API時(shí),經(jīng)常會(huì)用Fiddler來查看相關(guān)的請(qǐng)求,以及返回結(jié)果。當(dāng)然你也可以嘗試修改或者重復(fù)你的請(qǐng)求信息。本文主要介紹如何使用代碼來實(shí)現(xiàn)fiddler的功能。

Fiddler Core API

Fiddler Core幾乎實(shí)現(xiàn)了你能用fiddler做的所有功能。直接在NuGet上搜索FiddlerCore即可下載FiddlerCore的.Net API。

開啟Fiddler Application

使用下面的代碼來開啟FiddlerApplication

FiddlerApplication.Startup(9898, FiddlerCoreStartupFlags.Default);

執(zhí)行后,fiddler會(huì)運(yùn)行一個(gè)http代理服務(wù)器,你可以使用FiddlerCoreStartupFlags.RegisterAsSystemProxy 來把這個(gè)代理服務(wù)器指定為系統(tǒng)代理,這樣就可以監(jiān)聽到本機(jī)所有的http請(qǐng)求。

當(dāng)程序結(jié)束的時(shí)候,記得使用下面的語句來關(guān)閉代理。

FiddlerApplication.Shutdown();

捕獲HttpRequest/HttpResponse

開啟了Fiddler Application之后,Fiddler在捕獲Request/Response的時(shí)候會(huì)觸發(fā)下面這兩個(gè)事件,你只需要定義事件來實(shí)現(xiàn)如何處理捕獲到的請(qǐng)求即可。

//

// 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協(xié)議的頁面呢?眾所周知,https通過通信證書來實(shí)現(xiàn)了服務(wù)器端和客戶端的加密,避免通信過程被監(jiān)聽。Fiddler通過中間人的方式來實(shí)現(xiàn)https協(xié)議的捕獲,所謂中間人就是Fiddler注入到應(yīng)用程序和服務(wù)器的中間,fiddler相對(duì)于服務(wù)器扮演客戶端的角色,相對(duì)于客戶端扮演服務(wù)器的角色,既然fiddler需要扮演服務(wù)器的角色,就需要一個(gè)證書,并且你的客戶端需要信任Fiddler的證書。我們以中國銀行的網(wǎng)站為例:

不開啟Fiddler登陸網(wǎng)銀時(shí),證書信息為:

?

開啟Fiddler登陸網(wǎng)銀后證書信息為:

由于我的機(jī)器已經(jīng)信任過Fiddler的證書,我們可以發(fā)現(xiàn),在開啟了Fiddler后,和中行網(wǎng)銀的通信證書變?yōu)榱?#xff1a;DO_NOT_TRUST_FiddlerRoot。如果使用FiddlerCore,我們同樣需要信任這個(gè)證書,相關(guān)的代碼如下:

public static bool InstallCertificate() {if (!CertMaker.rootCertExists()){if (!CertMaker.createRootCert())return false;if (!CertMaker.trustRootCert())return false;}return true; }

開始捕獲

使用這種方式,可以在不改變你現(xiàn)有代碼的情況下,測(cè)試你的API返回結(jié)果是否正確。下面的例子是一個(gè)用FiddlerCoreAPI來測(cè)試SharePointOnline認(rèn)證是否通過的例子。

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信息在這里隨意發(fā)揮了Console.WriteLine("BeforeResponse: {0}", oSession.responseCode);}static void FiddlerApplication_BeforeRequest(Session oSession){//想如何改寫Request信息在這里隨意發(fā)揮了Console.WriteLine("BeforeRequest: {0}, {1}", oSession.fullUrl, oSession.responseCode);}} }

  

?


作者:獨(dú)上高樓
出處:http://www.cnblogs.com/myprogram/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。

轉(zhuǎn)載于:https://www.cnblogs.com/myprogram/p/5042562.html

總結(jié)

以上是生活随笔為你收集整理的使用FiddlerCore来测试WebAPI的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。