关于模拟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的赋值的主要内容,如果未能解决你的问题,请参考以下文章
csharp 这是在不使用Moq或任何其他框架的情况下模拟HTTP上下文请求和请求Cookie对象的示例
C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段