關於模擬http請求 cookie的賦值


最近的工作一直是關於模擬http請求方面的知識的。

原本以為很簡單,就是簡單模擬一下http請求。先用fiddler模擬一下請求,驗證接口可用,就直接上代碼。

但是在模擬一個聯通http的請求時候,我就遇到難點了,首先要進入別人的網站,必須要注冊賬號登錄才行。

所以以前簡單的登錄根本就沒有涉及到什么cookie這個參數,有也是很簡單的單個鍵值對賦值。

我截一段聯通的請求:

可以看到這個請求的cookie那是相當的長;我第一放映是艹這么長那些是有用的那些是沒有用的,難道要我一個一個去嘗試,還不如一回都賦值上去,

如是我就把所有的cookie都以

req.CookieContainer.Add(new Cookie("sid", "werwerqw", "/", "iservice.10010"));

這種形式加上最后既然報錯了。
我懷疑是不是這個接口加密了,或者是根本就接不通。如是我把所有的請求都放到fiddler里面去嘗試,結果還是不行,
難道是接口真的不可用,不應該啊!
我有嘗試用postman去請求,有結果了(看來模擬http請求postman還是比fiddler好使啊)
那么我的代碼為啥不行了?
想了半天,我知道問題肯定出在cookie上了;
最好用反射給cookie賦值就好使了,簡單實用,代碼如下:
1   public static void SetHeaderValue(WebHeaderCollection header, string name, string value)
2         {
3             var property = typeof(WebHeaderCollection).GetProperty("InnerCollection", BindingFlags.Instance | BindingFlags.NonPublic);
4             if (property != null)
5             {
6                 var collection = property.GetValue(header, null) as NameValueCollection;
7                 collection[name] = value;
8             }
9         }
SetHeaderValue(req.Headers, "cookie",“cookie的值”);
ok了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM