• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

【求助关于HTTP响应报文】怎么获取Location的值

prlover 2014-03-02 12:00:12
访问一个网页 http://fc.5sing.com/DownFile.aspx?SongID=1737865&SongType=fc

这是一个被重定向的,我用F12抓取到响应报文代码是302(重定向),响应报文里也有要重定向的网址(Location)

这是F12捕获到的
响应 HTTP/1.1 302 Moved Temporarily
Date Sat, 01 Mar 2014 15:11:12 GMT
Content-Type text/html;charset=utf-8
Transfer-Encoding chunked
Connection keep-alive
X-Powered-By PHP/5.3.21
serversign 53
Location http://data7.5sing.com/T1waYbBXJT1R47IVrK.mp3

但是我用HttpWebResponse和WebResponse的Headers集合里面就是没有Location这个键值,连这个键都没有!

这是我用HttpWebResponse获取到的所有响应头,里面没有Location
Transfer-Encoding:chunked
Connection:keep-alive
Vary:Accept-Encoding,Accept-Encoding
serversign:19
Content-Type:text/html;charset=utf-8
Date:Sat, 01 Mar 2014 15:48:59 GMT
X-Powered-By:PHP/5.3.21

问题:怎么用代码获取Location重定向的网址咩~~๑Ծ ౪ Ծ๑
...全文
325 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
引用 7 楼 prlover 的回复:
[quote=引用 6 楼 superliu1122 的回复:] 可能是你的请求和浏览器的不一样 包括Cookies,User-Agent这些等等 比如登录信息的Cookies是否正确,我直接打开网址响应是200,显示下载失败,应该是没有登录的原因
我试了下 还真是这个原因 3q[/quote] 楼主,这个location最后怎么拿到的?我纠结好久了,要怎么拿?
回复
prlover 2014-03-02
引用 2 楼 sp1234 的回复:
sorry,又跟踪了一下,如果是302,应该是在消息头中有Location。

但是使用你的url地址访问,得到的是200,而不是302.

不会啊,你看我的
回复
prlover 2014-03-02
引用 1 楼 sp1234 的回复:
这地址就压根不是在Headers集合中的。它在返回的消息体中。
消息体?GetResponseStream()里面没有啊,而且F12捕获到的明明在响应标头里面呢
回复
sorry,又跟踪了一下,如果是302,应该是在消息头中有Location。 但是使用你的url地址访问,得到的是200,而不是302.
回复
这地址就压根不是在Headers集合中的。它在返回的消息体中。
回复
prlover 2014-03-02
引用 6 楼 superliu1122 的回复:
可能是你的请求和浏览器的不一样 包括Cookies,User-Agent这些等等 比如登录信息的Cookies是否正确,我直接打开网址响应是200,显示下载失败,应该是没有登录的原因
我试了下 还真是这个原因 3q
回复
superliu1122 2014-03-02
可能是你的请求和浏览器的不一样 包括Cookies,User-Agent这些等等 比如登录信息的Cookies是否正确,我直接打开网址响应是200,显示下载失败,应该是没有登录的原因
回复
prlover 2014-03-02
引用 2 楼 sp1234 的回复:
sorry,又跟踪了一下,如果是302,应该是在消息头中有Location。 但是使用你的url地址访问,得到的是200,而不是302.
我用代码跟踪也是200 但是用浏览器捕获的是302,好奇怪 我的代码

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ur1);
request.AllowAutoRedirect = false;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
int code = (int)response.StatusCode;
回复
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2014-03-02 12:00
社区公告

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