路径中存在非法字符,使用web.downloadstring时出现问题。

5
我将使用正则表达式从网站中获取名称。然而,当我运行程序时,出现“路径中有非法字符”的错误。以下是代码:
private void button1_Click(object sender, EventArgs e)
{
    List<string> givenNames = new List<string>();

    WebClient web = new WebClient();

    for (int i = 10000; i <= 33852; i++)
    {   
        string numberurl = i.ToString();
        string mainurl = "www.cpso.on.ca/docsearch/details.aspx?view=1&id=+" + numberurl;
        String html = web.DownloadString(mainurl);

        Match m = Regex.Match(html, @"</strong>\s*(.+?)\s*&nbsp;", RegexOptions.Singleline);

        string givenName = m.Groups[1].Value;
        givenNames.Add(givenName);
    }
    listBox1.DataSource = givenNames; 
}

错误发生在String html = web.DownloadString(mainurl);这一行。我尝试使用HttpUtility.UrlEncode,但仍然无法解决。感谢您的帮助。

6
你尝试给你的URL加上http://了吗? - Joachim Isaksson
2
当然,在路径开头没有协议意味着路径中有非法字符。微软,错误信息写得非常清楚易懂,做得好。 - glenatron
2个回答

11

你需要在URL中包含 http://。

string mainurl = "http://www.cpso.on.ca/docsearch/details.aspx?view=1&id=+" + numberurl;

0

我的URL是从API端点获取的,因此它作为引用字符串返回,例如"\"http://someurl.com/somefile.txt\""。这个带引号的字符串让WebClient在尝试下载文件时感到不安。

为了解决这个问题,我调用了方法myUrl.Trim('"'),使其从字符串开头和结尾删除引号。

这样,字符串变成了"http://someurl.com/somefile.txt"(没有内部引号),然后WebClient能够成功地从URL下载文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接