我实际上正在使用我通过REST调用的last.FM web服务API。当我得到响应时,我尝试将结果转换为XDocument,因此我可以使用LINQ来处理它。
但是当我将结果字符串传递给XDocumnet构造函数时,会抛出ArgumentException,告诉我“无法将非空格字符添加到内容中”。不幸的是,我对Web服务和XML编程很陌生,所以我真的不知道如何解释这个异常。
我希望有人能给我一个如何解决这个问题的提示。
答案 0 :(得分:4)
听起来好像你在一个字符串中持有响应。如果是这种情况,您可以尝试在XDocument上使用Parse方法,该方法用于从字符串中解析XML。
string myResult = "<?xml blahblahblah>";
XDocument doc = XDocument.Parse(myResult);
这可能会也可能不会解决您的问题。只是一个值得一试的建议,看看你是否得到了不同的结果。
答案 1 :(得分:3)
以下是您可以用来查询服务的示例:
class Program
{
static void Main(string[] args)
{
using (WebClient client = new WebClient())
using (Stream stream = client.OpenRead("http://ws.audioscrobbler.com/2.0/?method=album.getinfo&api_key=b25b959554ed76058ac220b7b2e0a026&artist=Cher&album=Believe"))
using (TextReader reader = new StreamReader(stream))
{
XDocument xdoc = XDocument.Load(reader);
var summaries = from element in xdoc.Descendants()
where element.Name == "summary"
select element;
foreach (var summary in summaries)
{
Console.WriteLine(summary.Value);
}
}
}
}
答案 2 :(得分:1)
http://jamescrisp.org/2008/08/08/simple-rest-client/发布了一个小型REST客户端。也许是你的起点。