0

webclient または httpwebrequest を使用して 2 つのことを行うにはどうすればよいですか。

1) 次を使用して、リソースを文字列としてダウンロードした後に言います。

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

相対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

次に、2番目のURLを取得したい

前もって感謝します

4

1 に答える 1

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 パラメータがある場合にも機能します。

2 番目の質問については、リクエストがリダイレクトされたという意味で、代わりにその URL が必要ですか? 次に、これを行う最も簡単な方法は、ここでWebClient説明するサブクラスを作成することです。

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);
}
于 2013-05-30T12:59:09.760 に答える