C#でやろうと思ったら想像以上に情報が無かったのでまとめてみました。
とりあえずやったことは、C#から呼んだヤフーAPI(ヤフオク商品検索)の結果をデシリアライズするところまで。
終わってみれば簡単なことだったのですが、少しハマりました。

実行環境

  • Windows 7 Professional 64bit
  • Visual Studio 2013 Community

C#からヤフーAPIを呼ぶ手順

アプリケーションIDを取得

ヤフーAPIを利用するにはヤフーアカウントに紐づくアカウントIDを取得しなくてはいけません。
まずはヤフーAPIのアカウントIDを取得しましょう。

レスポンスデータの解析

ヤフーAPIのレスポンスデータはXMLで返ってくるので、これを解析して利用します。
HTML AGILITY PACKで欲しい要素だけ抜くという手もありますが、とりあえず全部欲しいのでデシリアライズすることにしました。

xsdファイルを取得

ヤフーオークションWebAPIのサイトからxsdファイルを取得します。

クラスファイルを生成

Microsoft SDKのにあるxsd.exeを使ってxsdファイルからクラスファイルを生成します。
ただしこのxsdファイル、このままだとエラーになるので手直しが必要です。

35行目

<xsd:element name="Image" type="xsd:anyURI">
  <xsd:complexType>
    <xsd:attribute name="width" type="xsd:integer"/>
    <xsd:attribute name="height" type="xsd:integer"/>
  </xsd:complexType>
</xsd:element>

上記ブロックを下記で書き換えます。

<xsd:element name="Image" type="ImageType" />

続いて

</xsd:schema>

の前に下記を追記します。

<xsd:complexType name="ImageType">
 <xsd:simpleContent>
    <xsd:extension base="xsd:anyURI">
      <xsd:attribute name="width" type="xsd:integer"/>
      <xsd:attribute name="height" type="xsd:integer"/>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>

ここまでできたらxsdファイルをxsd.exeのフォルダにコピーして以下のコマンドを実行します。
※コマンドプロンプトは管理者権限で起動してください。

xsd search.xsd /c

APIを呼んでみる

生成されたクラスファイルをプロジェクトに追加したら準備は完了。
ヤフーAPIを呼んでさきほど追加したResultSetクラスを使ってデシリアライズしてやるだけです。

// URLを生成
var url = string.Format("{0}?appid={1}&query={2}"
  , "http://auctions.yahooapis.jp/AuctionWebService/V2/search"
  , YAHOO_API_APPID
  , HttpUtility.UrlEncode("妖怪ウォッチ"));

// HTTPリクエスト生成
var request = WebRequest.Create(url) as HttpWebRequest;

using(var response = request.GetResponse())
using (var stream = response.GetResponseStream())
{
    // XmlSerializer作成
    var serializer = new XmlSerializer(typeof(ResultSet));

    // デシリアライズ
    var rs = serializer.Deserialize(stream) as ResultSet;
}

あとは煮るなり焼くなりご自由に。

編集後記

基本的にWebAPIをクライアントアプリケーションで呼び出すってニーズが少ないんでしょうけどね。
サードパーティのライブラリとかもC#だけ無くてちょっと寂しい。

いつもシェアありがとうございます!気に入ったらシェアしていただけたら幸いです。