5

WebClientWindows Phone 8 と Android HttpClient の Yahoo データを取得するために使用します

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

イベントの送信後。

   StringReader stream = new StringReader(e.Result)

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

しかし、Windows 8 RT ではそのようなことはありません。

次のデータを取得するにはどうすればよいですか? > http://weather.yahooapis.com/forecastrss?w=2343732&u=c

4

1 に答える 1

8

次のようなHttpClientクラスを使用できます。

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);
}

より単純なバージョンは次のようになります:

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

しかし、httpエラーが発生した場合、GetStringAsyncはHttpResponseExceptionをスローし、例外メッセージを除いてhttpステータスが示されていないことがわかります。

更新:実際にRSSフィードを読み込もうとしていることに気づきませんでした。HttpClientとXMLパーサーは必要ありません。SyndicationFeedクラスを使用するだけです。例を次に示します。

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

于 2013-03-03T23:04:39.310 に答える