关于模拟http请求 cookie的赋值

Posted HK->胡康

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于模拟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了!

以上是关于关于模拟http请求 cookie的赋值的主要内容,如果未能解决你的问题,请参考以下文章

http模拟登陆及发请求

关于Http请求Cookie问题

csharp 这是在不使用Moq或任何其他框架的情况下模拟HTTP上下文请求和请求Cookie对象的示例

C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段

模拟登录cookie操作

关于node中cookie和session使用