HttpWebRequestを使用すると、WebサービスAPI、XMLライブラリを呼び出して、レスポンス文字列を.netオブジェクトに変換できます。ここで は簡単な例である(それはエラーメッセージ私は有効なキーを持っていないとして、「供給無効なAPIアクセスキー」を取得します):
public static T DeserializeString<T>(String content)
{
using (TextReader reader = new StringReader(content))
{
XmlSerializer s = new XmlSerializer(typeof(T));
return (T)s.Deserialize(reader);
}
}
:XmlUtil.DeserializeStringは次のように定義されて
static void Main(string[] args)
{
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(
@"http://www.ctabustracker.com/bustime/api/v1/gettime?key=89dj2he89d8j3j3ksjhdue93j"
);
using (WebResponse resp = req.GetResponse())
{
using (Stream respStream = resp.GetResponseStream())
{
using(StreamReader reader = new StreamReader(respStream))
{
String respString = reader.ReadToEnd();
Debug.WriteLine(respString);
TestBusTimeResponse response = XmlUtil.DeserializeString<TestBusTimeResponse>(respString);
Debug.WriteLine(response.Error.Message);
}
}
}
Console.ReadLine();
}
とTestBusTimeResponseは(あなたが実際にVSに同梱xsdユーティリティを使用して、APIドキュメントに指定されたXMLスキーマでこのビジネス・オブジェクト・クラスを生成することができます)のように定義されます。
[XmlRoot("error")]
public class TestBusTimeResponseError
{
[XmlElement("msg")]
public String Message
{
get;
set;
}
}
// Response in the following format:
// <?xml version="1.0"?>
// <bustime-response><error><msg>Invalid API access key supplied</msg></error></bustime-response>
[XmlRoot("bustime-response")]
public class TestBusTimeResponse
{
[XmlElement("error")]
public TestBusTimeResponseError Error
{
get;
set;
}
}
簡単なWebRequestはできますか? – user1096188
@ user1096188これは私が望むものに近いですが、私のためにオブジェクトへの応答をシリアル化しますか?私はどのようにしてオブジェクトを定義しますか?ツールはありますか?または、私は自分自身でXMLを処理する必要がありますか? XmlSerializerで? – Jay