关于模拟http请求 cookie的赋值

时间:2021-08-27 02:34:21

最近的工作一直是关于模拟http请求方面的知识的。

原本以为很简单,就是简单模拟一下http请求。先用fiddler模拟一下请求,验证接口可用,就直接上代码。

但是在模拟一个联通http的请求时候,我就遇到难点了,首先要进入别人的网站,必须要注册账号登录才行。

所以以前简单的登录根本就没有涉及到什么cookie这个参数,有也是很简单的单个键值对赋值。

我截一段联通的请求:

关于模拟http请求 cookie的赋值

可以看到这个请求的cookie那是相当的长;我第一放映是艹这么长那些是有用的那些是没有用的,难道要我一个一个去尝试,还不如一回都赋值上去,

如是我就把所有的cookie都以

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

这种形式加上最后既然报错了。
我怀疑是不是这个接口加密了,或者是根本就接不通。如是我把所有的请求都放到fiddler里面去尝试,结果还是不行,
难道是接口真的不可用,不应该啊!
我有尝试用postman去请求,有结果了(看来模拟http请求postman还是比fiddler好使啊)
那么我的代码为啥不行了?
想了半天,我知道问题肯定出在cookie上了;
最好用反射给cookie赋值就好使了,简单实用,代码如下:
   public static void SetHeaderValue(WebHeaderCollection header, string name, string value)
{
var property = typeof(WebHeaderCollection).GetProperty("InnerCollection", BindingFlags.Instance | BindingFlags.NonPublic);
if (property != null)
{
var collection = property.GetValue(header, null) as NameValueCollection;
collection[name] = value;
}
}
SetHeaderValue(req.Headers, "cookie",“cookie的值”);
ok了!