2013-11-26 2 views
1

API 데이터 검색에 완전히 익숙하지 않아 도움이됩니다. 이 오류 메시지가 다시 제공C# 및 Forecast 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."

누군가 내가 잘못 가고 있다는 것을 알려주실 수 있습니까?

답변

4

첫째, 당신은 API 호출의 출력이, 시도 상황을 확인하기 위해 필요

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

은 XElement를이 XML을로드, 완전히 유효한 XML해야합니다. 이것이 오류 메시지의 출처입니다. XElement는 매우 엄격합니다. 응답이 HTML 인 경우 HtmlAgilityPack을 사용하는 것이 좋습니다. 그러면 정상적으로 저장됩니다. 그것은 그런 JSON API 또는 뭔가가 있다면

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

, ServiceStack을 사용하는 것이 좋습니다. 그것은 또한 당신의 온건함을 구할 것입니다.

행운을 빈다.