C# WebClient下载多个文件错误—;无效的URI:该URI为空

C# WebClient下载多个文件错误—;无效的URI:该URI为空,c#,webclient,last.fm,webclient-download,C#,Webclient,Last.fm,Webclient Download,我想从last.fm下载所有专辑艺术家,每个封面都命名为专辑标题。 但是当启动程序时,我得到一个错误:“无效URI:URI为空。” 程序代码: public static void GetXML() { string url = @"http://ws.audioscrobbler.com/2.0/?method=artist.gettopalbums&artist=radiohead&api_key=b25b959554ed76058ac

我想从last.fm下载所有专辑艺术家,每个封面都命名为专辑标题。 但是当启动程序时,我得到一个错误:“无效URI:URI为空。”

程序代码:

public static void GetXML()
        {
            string url = @"http://ws.audioscrobbler.com/2.0/?method=artist.gettopalbums&artist=radiohead&api_key=b25b959554ed76058ac220b7b2e0a026";
            string albumName = String.Empty;
            string coverLink = String.Empty;
            int[] numArr = new int[30];

            for (int x = 1; x < numArr.Length; x++)
            {
                numArr[x] = x;   
            }

           XDocument xml = XDocument.Load(url);

           foreach (var c in numArr)
           {
               var name = xml.XPathSelectElements(String.Format("//album[@rank='{0}']", c))
                             .Select(x => x.Element("name").Value)
                             .ToList();
               foreach (var item in name)
               {
                   albumName = item.ToString();
               }

               var covers = xml.XPathSelectElements(String.Format("//album[@rank='{0}']/image[@size='extralarge']", c))
                          .Select(x => x.Value)
                          .ToList();
               foreach (var item in covers)
               {
                   coverLink = item.ToString();
               }

               WebClient web = new WebClient();
               web.DownloadFileCompleted += new System.ComponentModel.AsyncCompletedEventHandler(web_DownloadFileCompleted);
               web.DownloadFileAsync(new Uri(coverLink), @"X:\Code\T\" + albumName + ".jpg");
           }

        }
publicstaticvoidgetxml()
{
字符串url=@“http://ws.audioscrobbler.com/2.0/?method=artist.gettopalbums&artist=radiohead&api_key=b25b959554ed76058ac220b7b2e0a026";
string albumName=string.Empty;
string coverLink=string.Empty;
int[]numArr=新int[30];
对于(int x=1;xx.Element(“name”).Value)
.ToList();
foreach(名称中的变量项)
{
albumName=item.ToString();
}
var covers=xml.XPathSelectElements(String.Format(//album[@rank='{0}']]/image[@size='extralge']],c))
.选择(x=>x.Value)
.ToList();
foreach(封面中的var项目)
{
coverLink=item.ToString();
}
WebClient web=新的WebClient();
web.DownloadFileCompleted+=new System.ComponentModel.AsyncCompletedEventHandler(web\u DownloadFileCompleted);
DownloadFileAsync(新Uri(coverLink),@“X:\Code\T\”+albumName+“.jpg”);
}
}

将数组初始化为

for (int x = 1; x < numArr.Length; x++)
{
      numArr[x] = x;   
}

所以URI是空的吗?如果是,它什么时候是空的?你试图修复代码的是什么?哪行?你没调试过吗?URI的值是什么,为什么可能是空的?在这里提问之前,你应该先问自己的问题。如果您进行一些调试并将结果写入问题中,您可能会得到更好的答案。您的代码有bug。这取决于你们找到它们(若你们错过了,VisualStudio会提供集成的调试器),然后就你们想不出/不想知道的事情提问。另一种方法是付钱给某人为您开发代码。
http://stackoverflow.com/questions/9870909/deserialize-xml-in-complex-object
阅读此内容可能会对您有所帮助
 var albums = xml.Descendants("album")
        .Select(a => new
        {
            Rank = (int)a.Attribute("rank"),
            Name = a.Element("name").Value,
            ImageUrl = a.XPathSelectElement("image[@size='extralarge']").Value
        })
        .ToList();