もちろん、Microsoft.AspNet.WebApi.Client パッケージをインストールするだけです - http://nuget.org/packages/Microsoft.AspNet.WebApi.Client/4.0.20710.0
これで、外部サービスを呼び出して、オブジェクトを直接読み取ることができます:
var client = new HttpClient();
var response = await client.GetAsync("http://thegamesdb.net/api/GetGamesList.php?name=x-men");
if (response.IsSuccessStatusCode)
{
var data = await response.Content.ReadAsAsync<Data>();
foreach (var game in data.Game)
{
Console.WriteLine("{0}\t{1};\t{2}", game.Id, game.GameTitle, game.Platform);
}
}
編集:
XML のコレクションの形式が標準ではない場合、次のようにします。
[XmlRoot("Data")]
public class Data
{
[XmlElement("Game")]
public List<Game> Games { get; set; }
}
[XmlType("Game")]
public class Game
{
public int id { get; set; }
public string GameTitle { get; set; }
public string ReleaseDate { get; set; }
public string Platform { get; set; }
}
と:
var client = new HttpClient();
var response = await client.GetAsync("http://thegamesdb.net/api/GetGamesList.php?name=x-men");
if (response.IsSuccessStatusCode)
{
var games = await response.Content.ReadAsAsync<Data>(new HashSet<MediaTypeFormatter>() { new XmlMediaTypeFormatter {UseXmlSerializer = true} });
foreach (var game in games.Games)
{
Console.WriteLine("{0}\t{1};\t{2}", game.id, game.GameTitle, game.Platform);
}
}
XmlSerializer
プロパティの形式で実際に送信される配列をどのように扱うかをヒントする必要があります。また、それらの日付は有効ではないため、文字列に保存する (またはセッターで解析する) 必要があります。
また、XmlSerializer
notを使用しているため、DataContractSerializer
は使用できません。IEnumerable
である必要がありますList<T>
。