web.downloadstring路径中的非法字符

时间:2012-08-03 17:28:13

标签: c# webforms

我正在尝试使用正则表达式从网站中检索名称。但是,当我运行程序时,我使用“路径中的非法字符”得到错误。这是代码:

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但它仍然无效。我很感激帮助。

2 个答案:

答案 0 :(得分:10)

您需要在网址中包含http://。

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

答案 1 :(得分:0)

我的URL来自API端点,因此它以带引号的字符串形式返回,例如name: String, i: List[Int]。引用的字符串是试图下载文件时使WebClient感到不舒服的原因。

要修复此问题,我在此字符串上调用了方法"\"http://someurl.com/somefile.txt\"",使它删除了字符串开头和结尾的引号。

此后,字符串变为myUrl.Trim('"')(不带内引号),然后Web客户端便能够从URL成功下载文件。