zoukankan      html  css  js  c++  java
  • 关于模拟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了!
  • 相关阅读:
    使用crontab定时执行脚本时别忘了输出重定向>
    php 中函数获取可变参数的方法, 这个语法有点像 golang 语言中的
    单词number 和 numeral 的区别
    vim 调到闭合的{
    [转]文件IO详解(二)---文件描述符(fd)和inode号的关系
    js中有包装类,java中也有包装类
    cin中函数的作用
    string类小结
    结构、位域、联合、枚举之小小总结
    运算符重载(C++)
  • 原文地址:https://www.cnblogs.com/HKKD/p/6093011.html
Copyright © 2011-2022 走看看