C#和预测API

问题描述:

我完全不熟悉API数据复现,并希望得到一些帮助。这是我此刻的代码:C#和预测API

else if (e.KeyCode == Keys.Enter & InputTextbox.Text.Contains("hot")) 
{ 
    try 
    { 
     XElement doc = XElement.Load("https://api.forecast.io/forecast/*APIKEY*/-31.4296,152.9082"); 
     OutputTextbox.Text = "It is currently " + doc;                
     pBuilder.ClearContent();                       
     pBuilder.AppendText(OutputTextbox.Text);                   
     sSynth.Speak 
     pBuilder);                            
     e.SuppressKeyPress = true;                           
     InputTextbox.Text = ""; 
    } 
    catch (System.Xml.XmlException fe) 
    { 
     MessageBox.Show(fe.Message); 
    } 

这还给了错误信息:“数据在根级别是无效的1号线,位置1。”

有人能让我知道我要去哪里吗?

首先,你需要看什么API调用的输出,请尝试:

using(var client = new WebClient()) { 
    var responseStr = client.DownloadString("https://api.forecast.io/forecast/*APIKEY*/-31.4296,152.9082"); 
    OutputTextbox.Text = responseStr; 
} 

然后,加载这个XML用的XElement,它需要是完全有效的XML。这是您的错误消息的来源:XElement非常严格。如果回复是HTML,请考虑使用HtmlAgilityPack,它会保存您的理智。

var doc = new HtmlDocument(); 
doc.Load("https://...."); 

如果它是一个JSON API或类似的东西,可以考虑使用ServiceStack。这也将拯救你的理智。

祝你好运。