1

我尝试使用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;
        }
    }

网址是 http://www.paginegialle.it/roma-rm/abbigliamento/alberto-aspesi-c

在此处输入图像描述

但我可以毫无问题地在 IE9 和 Firefox 和 Chrome 浏览器中导航到这个 URL。我使用 Fiddler 来解决这个问题。

我发现 URL 在之后发生了变化WebClient.Request- 请参见下图:

实际网址:http://www.paginegialle.it/roma-rm/abbigliamento/alberto-aspesi-c.

在此处输入图像描述

在此处输入图像描述

请看区别。我删除了网址末尾的点。但它不适用于浏览器(IE9、Firefox、Chrome)。如何将实际网址更改为此网址?

请帮我。

4

2 回答 2

0

我认为您在 .NET URI 对象中发现了一个很酷的错误。

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

显示:

http://example.com/bug/这里

请注意,缺少尾随期间。

于 2012-11-07T23:25:37.993 回答
0

此行之后的网址是否仍然正确:

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

我猜它适用于其他网站?

于 2012-11-06T12:38:23.853 回答