読者です 読者をやめる 読者になる 読者になる

WCFではてなスターの総数を取得してみる

最近WCFの勉強中なので、Webサービスを呼び出したりして遊んでる。

今日ははてなスターAPIを呼び出してみた。

以下がそのプログラム。

using System;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;

class Program
{
    static void Main(string[] args)
    {
        string url = "http://s.hatena.ne.jp/blog.json/";
        WebHttpBinding binding = new WebHttpBinding();

        var factory = new WebChannelFactory<IHatenaStarService>(binding, new Uri(url));
        IHatenaStarService service = factory.CreateChannel();

        HatenaStar star = service.GetHatenaStar("http://d.hatena.ne.jp/ZOETROPE/");

        Console.WriteLine(star.title);
        Console.WriteLine(star.star_count);
        Console.WriteLine(star.uri);
    }
}

[ServiceContract]
public interface IHatenaStarService
{
    [OperationContract]
    [WebGet(UriTemplate = "{uri}",
        RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    HatenaStar GetHatenaStar(string uri);
}

[DataContract]
public sealed class HatenaStar
{
    [DataMember]
    public string title;
    [DataMember]
    public string star_count;
    [DataMember]
    public string uri;
}

はてなスターAPIはJSON形式で結果が取得できるので、WebMessageFormat.Jsonを指定する必要があるのがポイント。

Contractは推測で書いたのに、あっさり動いてちょっとびっくりした。

実行結果はこうなる。

ZOETROPEの日記
39
http://d.hatena.ne.jp/ZOETROPE/

インサイドWindows Communication Foundation (マイクロソフト公式解説書 Microsoft Visual Studio 2008)

インサイドWindows Communication Foundation (マイクロソフト公式解説書 Microsoft Visual Studio 2008)


これからはじめるWCFプログラミング

これからはじめるWCFプログラミング