HttpWebRequest Headers Location

dengxyuan 2013-08-12 04:37:10
做Post 提交时 对方的服务器返回给我的信息中 并没有Location 这个属性
// 设置参数
request = WebRequest.Create(posturl) as HttpWebRequest;

request.AllowAutoRedirect = false;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";

request.Headers.Set("Accept-Encoding", "gzip, deflate");
request.Headers.Set("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0";
request.Referer = posturl;
request.ContentLength = data.Length;
outstream = request.GetRequestStream();
outstream.Write(data, 0, data.Length);
outstream.Close();
//发送请求并获取相应回应数据
response = request.GetResponse() as HttpWebResponse;
string location = response.Headers["Location"];
//直到request.GetResponse()程序才开始向目标网页发送Post请求
instream = response.GetResponseStream();
sr = new StreamReader(instream, encoding);

string location 这个变量的值 总是得到null

请高手指教 不胜感激。
...全文
256 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
whowhen21 2013-08-12
  • 打赏
  • 举报
回复
引用 4 楼 dengxyuan 的回复:
我模拟提交时 headers 跟浏览器的请求头的设置的是保持一致的 http://www.drugstore.com/lysol-disinfecting-wipes-ocean-fresh/qxp226859?catid=184276 像这种页面 点击属性时 就是post提交 然后我用C#程序 来模拟 但是都得不到Location
如果没有Location,就是你提交信息信息不对。还有你可以抓包看看你程序提交的信息和浏览器是否一致,有没有Location
qldsrx 2013-08-12
  • 打赏
  • 举报
回复
你要location 做啥,从头到尾都没用到,这东西也没必要由服务器返回,自己本地存储计算就可以了。
dengxyuan 2013-08-12
  • 打赏
  • 举报
回复
引用 5 楼 whowhen21 的回复:
[quote=引用 4 楼 dengxyuan 的回复:]我模拟提交时 headers 跟浏览器的请求头的设置的是保持一致的 http://www.drugstore.com/lysol-disinfecting-wipes-ocean-fresh/qxp226859?catid=184276 像这种页面 点击属性时 就是post提交 然后我用C#程序 来模拟 但是都得不到Location
属性点击确实是post,Location跳转,但是这个post还有属性的一些数据,你看看post的数据和浏览器提交的是否一致~[/quote] 我是用浏览器的参数来post提交的 是保持一致的 能否交个朋友 我们用qq或者email交流 QQ:741330596 email:dengxyuan@163.com
whowhen21 2013-08-12
  • 打赏
  • 举报
回复
引用 4 楼 dengxyuan 的回复:
我模拟提交时 headers 跟浏览器的请求头的设置的是保持一致的 http://www.drugstore.com/lysol-disinfecting-wipes-ocean-fresh/qxp226859?catid=184276 像这种页面 点击属性时 就是post提交 然后我用C#程序 来模拟 但是都得不到Location
属性点击确实是post,Location跳转,但是这个post还有属性的一些数据,你看看post的数据和浏览器提交的是否一致~
dengxyuan 2013-08-12
  • 打赏
  • 举报
回复
引用 3 楼 whowhen21 的回复:
[quote=引用 2 楼 dengxyuan 的回复:]谢谢你的回答 我这个是控制台应用程序 不存在js的问题 而且看了页面跳转是Post提交 然后通过监控可以看到 Headers 一直没有Location属性
我知道是模拟提交的,我是说你监控看下在浏览器post提交的时候,跳转是通过Location还是js,如果浏览器那边是的,那就有可能是你提交的信息不正确,服务器没有处理跳转~[/quote] 我模拟提交时 headers 跟浏览器的请求头的设置的是保持一致的 http://www.drugstore.com/lysol-disinfecting-wipes-ocean-fresh/qxp226859?catid=184276 像这种页面 点击属性时 就是post提交 然后我用C#程序 来模拟 但是都得不到Location
whowhen21 2013-08-12
  • 打赏
  • 举报
回复
引用 2 楼 dengxyuan 的回复:
谢谢你的回答 我这个是控制台应用程序 不存在js的问题 而且看了页面跳转是Post提交 然后通过监控可以看到 Headers 一直没有Location属性
我知道是模拟提交的,我是说你监控看下在浏览器post提交的时候,跳转是通过Location还是js,如果浏览器那边是的,那就有可能是你提交的信息不正确,服务器没有处理跳转~
dengxyuan 2013-08-12
  • 打赏
  • 举报
回复
引用 1 楼 whowhen21 的回复:
Location这个header只有在跳转的时候才有,有些时候跳转不一定通过状态码实现(比如js),是无法获取Location属性的。你再确认页面跳转方式之后再看看问题在哪儿~
谢谢你的回答 我这个是控制台应用程序 不存在js的问题 而且看了页面跳转是Post提交 然后通过监控可以看到 Headers 一直没有Location属性
whowhen21 2013-08-12
  • 打赏
  • 举报
回复
Location这个header只有在跳转的时候才有,有些时候跳转不一定通过状态码实现(比如js),是无法获取Location属性的。你再确认页面跳转方式之后再看看问题在哪儿~

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧