1

を使用してhtmlファイルをダウンロードしようとしていますWebClient

これは私のコードです:

public string GetWebData(string url)
{
        string html = string.Empty;

        using (WebClient client = new WebClient())
        {
            Uri innUri = null;
            Uri.TryCreate(url, UriKind.RelativeOrAbsolute, out innUri);

            try
            {
                client.Headers.Add("Accept-Language", " en-US");
                client.Headers.Add("Accept-Encoding", "gzip, deflate");
                client.Headers.Add("Accept", " text/html, application/xhtml+xml, */*");
                client.Headers.Add("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)");

                using (StreamReader str = new StreamReader(client.OpenRead(innUri)))
                {
                    html = str.ReadToEnd();
                }
            }
            catch (WebException we)
            {
                throw we;
            }

            return html;
        }
    }

URLは http://www.paginegialle.it/roma-rm/abbigliamento/alberto-aspesi-c.

ここに画像の説明を入力

しかし、IE9 と Firefox および Chrome ブラウザーで問題なくこの URL に移動できます。この問題を解決するために Fiddler を使用します。

その後、URL が変更されていることがわかりましたWebClient.Request。下の画像を参照してください。

実際の URL:http://www.paginegialle.it/roma-rm/abbigliamento/alberto-aspesi-c.

ここに画像の説明を入力

ここに画像の説明を入力

違いをご覧ください。URL の末尾にあるドットを削除します。しかし、ブラウザ (IE9、Firefox、Chrome) では機能しません。実際の URL をこの URL に変更するにはどうすればよいですか?

私を助けてください。

4

2 に答える 2

0

この行の後もWebアドレスは正しいですか:

     Uri.TryCreate(url, UriKind.RelativeOrAbsolute, out innUri);

他のサイトでもうまくいくと思いますか?

于 2012-11-06T12:38:23.853 に答える
0

.NET URI オブジェクトで素晴らしいバグを見つけたと思います。

MessageBox.Show(new Uri("http://example.com/bug/here."));

ショー:

http://example.com/bug/here

末尾のピリオドが欠落していることに注意してください。

于 2012-11-07T23:25:37.993 に答える