2013-05-30 17 views
0

如何使用任何的WebClient或HttpWebRequest的做两件事网址(也是查询字符串):的WebClient或HttpWebRequest的检索的HREF和URL

<a href="/q?name=john&age=50">Click here to get your name and age</a> 

如何使用webclient单击(关注)该链接?在最初加载资源之后。我能够使用htmlagilitypack来隔离href,但现在我想在代码中遵循它。

2)如果httpwebrequest没有重定向,而是使用不同的参数加载相同的页面,我将如何使用webclient检索生成的新url? 即如果我叫

var result = x.DownloadString("http://randomsite.com); 

但是这实际上是调用

http://randomsite.com/q?site=default 

那么我想检索第二URL提前

感谢

回答

0

您可以从链接构造URL以及您刚刚下载的链接如下:

Uri baseUri = new Uri("http://randomsite.com"); 
Uri myUri = new Uri(baseUri, "/q?name=john&age=50"); 

Console.WriteLine(myUri.ToString()); // gives you http://randomsite.com/q?name=john&age=50 

这也适用,如果你基地网址有url参数。

至于第二个问题,我想你的意思是这个请求被重定向了,你想要那个url呢?那么最简单的方法就是将子类WebClient描述为here

Uri baseUri = new Uri("http://randomsite.com"); 
using(var client=new WebClient()) 
{ 
    var result = client.DownloadString(myUri); 
    //get href via HtmlAgilityPack... 
    Uri myUri = new Uri(baseUri, "/q?name=john&age=50"); 
    result = client.DownloadString(myUri); 
} 
+0

感谢您的快速回复。第二个答案是完整的,但是对于第一个答案,你能告诉我如何使用webclient或httpwebrequest模拟按钮点击吗?谢谢 –

+0

@JohnD增加了一个基本的例子 – shriek

相关问题