2013-03-03 7 views
5

Ich benutze WebClient Yahoo Daten für Windows Phone 8 und Android Httpclient Mit WebClient zu holen ichWebClient-Alternative für Windows 8?

WebClient client = new WebClient(); 
    client.DownloadStringCompleted += new  DownloadStringCompletedEventHandler(client_DownloadStringCompleted); 
    client.DownloadStringAsync(url); 

nach dem Senden Ereignis machen kann;

StringReader stream = new StringReader(e.Result) 

    XmlReader reader = XmlReader.Create(stream); 
    reader.ReadToFollowing("yweather:atmosphere"); 
    string humidty = reader.MoveToAttribute("humidity"); 

aber in Windows 8 RT gibt es keine solche Sache.

Wie kann ich die folgenden Daten abrufen? >http://weather.yahooapis.com/forecastrss?w=2343732&u=c

+0

Haben Sie 'HttpClient' angeschaut? –

Antwort

8

können Sie Httpclient-Klasse verwenden, das so etwas wie:

public async static Task<string> GetHttpResponse(string url) 
{ 
    var request = new HttpRequestMessage(HttpMethod.Get, url); 
    request.Headers.Add("UserAgent", "Windows 8 app client"); 

    var client = new HttpClient(); 
    var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead); 

    if (response.IsSuccessStatusCode) 
     return await response.Content.ReadAsStringAsync(); 
    else 
    throw new Exception("Error connecting to " + url +" ! Status: " + response.StatusCode); 
} 

Einfachere Version nur sein würde:

public async static Task<string> GetHttpResponse(string url) 
{ 
    var client = new HttpClient(); 
    return await client.GetStringAsync(url); 
} 

Aber wenn http Fehler auftritt GetStringAsync wird werfen HttpResponseException, und so weit ich kann sehen, dass kein HTTP-Status angezeigt wird, außer in der Ausnahmebedingungsnachricht.

UPDATE: ich nicht bemerkt, dass Sie in der Tat Sie RSS-Feed zu lesen versuchen, brauchen Sie nicht Httpclient und XML-Parser, nur SyndicationFeed Klasse verwenden, hier ist das Beispiel:

http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh452994.aspx

+0

Oder verwenden Sie 'erwarten client.GetStringASync' ... Sie müssen den Statuscode nicht selbst überprüfen. –

+0

Ich nehme an, dass GetStringASync eine Ausnahme auslöst, wenn sie fehlschlägt (WebException)? Es gibt nichts in MSDN-Dokumentation über das –

+0

Nun, die Aufgabe von GetStringAsync wird Fehler zurückgeben. Ich stimme zu, dass es besser dokumentiert werden sollte. –