C# WebClient下载多个文件错误—;无效的URI:该URI为空
我想从last.fm下载所有专辑艺术家,每个封面都命名为专辑标题。 但是当启动程序时,我得到一个错误:“无效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
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();