关于模拟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了!
时间: 2024-08-01 15:30:56

关于模拟http请求 cookie的赋值的相关文章

C#模拟请求,模拟登录,Cookie设置、文件上传等问题汇总

由于业务需求,最近需要模拟完成登陆某个网站,并上传所需要的文件.在开发途中,遇到了很多问题,现在,就我遇到的一些问题及解决办法说明如下,希望对遇到同样问题的人有所帮助.因为技术有限,可能有些内容并不完全正确或者理解有偏差,希望大家不要见怪,有不同的想法可以留言,我们共同学习,这也是我开始写博客的初衷之一. 模拟请求,首先我觉得我们需要明确的是,模拟那些请求,我们模拟请求要完成那些操作,就拿我上面的功能来说,我需要模拟登录某个网站,然后打开固定的页面,输入关键字,查找相关信息,然后上传所需要的文件

20150108--HTTP协议+PHP模拟HTTP请求-02

HTTP协议 1. 什么是http协议? 协议:协议是一种双方约定好的规范,双方在做某一件事情的事情,必须按照事先定义好的规范去实现和操作. HTTP:超文本传输协议,HyperText Transport Protocol,超文本在服务器与浏览器之间传输的时候必须遵循的协议. 2. 什么是html? 超文本标记语言:HyperText Markup Language html的作用:保证同一数据在不同的电脑(用户),看到的效果一样. HTTP协议工作原理 HTTP协议特点 支持客户/服务器模式

python模拟Get请求保存网易歌曲的url

python模拟Get请求保存网易歌曲的url 作者:vpoet 日期:大约在夏季 #coding:utf-8 import requests import json url = 'http://music.163.com//api/dj/program/byradio?radioId=271002&id=271002&ids=%5B%22271002%22%5D&limit=100&offset=0' headers = { 'Host': 'music.163.com'

postman模拟http请求

一.http请求(仅描述get和post请求) 1.get请求:在URL中直接展示参数名称和数值,请求长度有限制 例如,请求userid=1的用户信息,url:http://hostname/getuser?userid=1 2.post请求:将数据放在body中进行传输,因此,url中不会暴露请求的参数.post请求的数据可以非常大,可能会修改服务器中的资源.post请求需要借助工具,例如postman 1)上传文件 2)传输json数据类型:选择Body-raw,将最后一个选项Text修改成

C# 通过模拟http请求来调用soap、wsdl

C#调用webservice的方法很多,我说的这种通过http请求模拟来调用的方式是为了解决C#调用java的远程API出现各种不兼容问题. 由于远程API不在我们的控制下,我们只能修改本地的调用代码来适应远程API. 在以上情况下,我们就通过模拟http请求来去调用webservice. 首先,我们要分析调用端口时,我们发送出去的数据. 先抓个包看看,这里,我们没有办法用Fiddler来监听SOAP协议的内容,但是SOAP还是基于http协议的. 用更底层的工具是能够抓到的.这里可以去百度一下

php curl模拟post请求提交数据样例总结

在php中要模拟post请求数据提交我们会使用到curl函数,以下我来给大家举几个curl模拟post请求提交数据样例有须要的朋友可參考參考.注意:curl函数在php中默认是不被支持的,假设须要使用curl函数我们需在改一改 在php中要模拟post请求数据提交我们会使用到curl函数,以下我来给大家举几个curl模拟post请求提交数据样例有须要的朋友可參考參考. 注意:curl函数在php中默认是不被支持的,假设须要使用curl函数我们需在改一改你的php.ini文件的设置,找到php_c

java 模拟http请求

整理一下用java模拟http请求的方法,如果有不正确的地方希望大家指正,如果大家有什么更好的方法欢迎提出 1.URLConnection可以向URL地址发送请求,读取URL的资源.建立和URL的连接通常需要一下几步: 创建URL对象,并通过调用openConnection方法获得URLConnection对象: 设置URLConnection参数和普通请求属性: 向远程资源发送请求: 远程资源变为可用,程序可以访问远程资源的头字段和通过输入流来读取远程资源返回的信息. import java.

使用socket模拟Http请求

这里举一个简单的例子,使用socket来模拟一段http访问百度代码 封装的工具类如下,方法叫XHttp() package com.spider.net; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socke

python模拟http请求2

发现了一个非常好用的第三方module:requests,模拟接口非常简单. 详细了解请移步:http://docs.python-requests.org/en/latest/ 非常不错 #!coding:utf-8    相信这句大家都懂的,不解释 #导入需要的requests import requests #定义请求头 reqheaders={'Content-type':'application/x-www-form-urlencoded',  'Accept':'text/html,