2011-08-24 101 views
0

删除片段我想打开如下页面:的WebRequest从乌里

http://www.google.com/search?q=dvd+player&tbm=shop&hl=en&aq=f#q=car+speaker+&hl=en&sa=X&ei=vbtSTqTPDKXniAKy0-iDAw&ved=0CC0QpwUoAA&tbs=cat:895%2Cprice%3A1%2Cppr_min%3A50%2Cppr_max%3A99.99&tbm=shop&tbo=&fp=1&biw=851&bih=426&cad=b&bav=on.2,or.r_gc.r_pw

但是当我尝试使用WebRequest类打开它,它消除了“片段”(这是不是一个URI片段在这种情况下)从URL,并尝试打开下面的网址,而不是:

http://www.google.com/search?q=dvd+player&tbm=shop&hl=en&aq=f

我该怎么做才能打开正是网址是什么?

我试图编码#性格,但似乎并不奏效。

编辑:
我知道网址是什么,该片段是什么,以及它的全部。我问的是如果有一种方法可以覆盖Uri类的功能。 (取Uri,并删除#之后的内容,并将其放在Fragment属性中,等等),这样我就可以查询该网址,而不是修改后的网址。

+0

禁用JavaScript一次,你会发现它是一个正在处理客户端的片段。 –

回答

3

虽然在你的榜样片段不到底该怎么做一个片段设计做的,它仍然提供客户端数据在浏览器初始加载页面后采取行动。如果您点击链接时仔细观看,您会看到页面标题以“dvd player”(来自原始查询字符串)开始,但在页面从服务器加载后更改为“car speaker”并且客户端脚本执行。

0

该片段是客户端机制,因此在服务器上没有用处。你传回服务器的任何数据都在查询字符串中,所以你看到了什么好处,试图传回一个片段?

1

据我所知#代表一个片段(通常在网页中的锚),而不是真正的URL的一部分,它只是需要在浏览器页面的特定部分,并且是在过程仅客户端。

换句话说,它不是URI请求的一部分。

的片段标识符的功能比 URI的其余部分是不同的:即,其处理是专门的客户端,没有从服务器 参与 - 当然的服务器通常有助于 确定MIME类型,而MIME类型决定了片段的处理。

当代理(如Web浏览器) 向Web服务器请求资源时,代理将URI发送到服务器,但不发送片段。相反,代理等待 服务器发送资源,然后代理根据文档类型和片段值处理 资源。

http://www.w3.org/TR/webarch/#media-type-fragid

+0

这很有道理,但你看过我发布的网址吗?你看到'#'后面有什么?它似乎不是页面的一部分的标识符... –

+4

虽然示例中的片段并不完全按照片段设计的方式进行,但它仍然提供**客户端**数据到浏览器在页面初始加载后采取行动。如果您点击链接时仔细观看,您会看到页面标题以“dvd player”(从原始查询字符串)开始,但在页面从服务器加载后更改为“car stereo”并且客户端脚本执行。 –

+0

@AdamMaras你可以发表评论作为答案,我可以接受吗?你完全正确:) –

0

这是一个奇怪的一个,该fragment真的不应该由服务器进行解析。但是,在你的示例网址中,最明显的片段正在被使用(可能在谷歌JS,客户端?)

这里有一个快速的黑客,似乎做你的需要通过编码整个查询:

string str = 
"http://www.google.com/search?q=dvd+player&tbm=shop&hl=en&aq=f#q=car+speaker+&hl=en&sa=X&ei=vbtSTqTPDKXniAKy0-iDAw&ved=0CC0QpwUoAA&tbs=cat:895%2Cprice%3A1%2Cppr_min%3A50%2Cppr_max%3A99.99&tbm=shop&tbo=&fp=1&biw=851&bih=426&cad=b&bav=on.2,or.r_gc.r_pw."; 

string[] arr = str.Split('?'); 
string uriString = arr[0] + "?" + HttpUtility.UrlEncode(arr[1]); 
var uri = new Uri(uriString); 
var request = (HttpWebRequest)WebRequest.Create(uri); 

编辑
回想起来,fragment正在客户端上的JS,而不是服务器使用侧。

一个更好的想法可能是理解谷歌的网址,也就是你的开放的我们应该是:

http://www.google.com/search?q=car+speaker&hl=en&tbs=cat:895,price:1,ppr_min:50&tbm=shop