C#で書く簡易HTTPサーバー(というよりはHTTPリクエスト受信サーバ?)
はてなブックマークのWebHookを今さらながら触っており、C#ではてブWebHook受信機を開発中です。
今回はその為の第一歩として簡易HTTPサーバーのコードを書いてみました。
まあHTTPサーバーとは言っていますが、叩かれたアドレス(正確にはパス)とクエリ情報(QueryString)を吐き出すコードです。
whileで無限ループさせてHTTPリクエストが来るのをじっと待っています。
昔使ったなでしこのように無限ループで固まったりCPUのパワーを全部持っていかないか心配でしたが、それも杞憂だったようで普通に動いてくれました。
まあ現状ではポート解放やそもそもIPアドレスの直叩きになってしまう為、WebHookを受信できません。
ここは流行のReverseHttpという「ReverseHttpはサーバで何かアクションが起きた場合に、ブラウザ側がその通知を受信する...なんて事が出来るプロトコル」を利用してそこらへんを何とかしようと思っています。
ともかく次の段階はUpNPの実装をしようと思います。
それでは!
以下、サンプルコード
static void Main(string[] args) { string prefix = "http://*/"; // 受け付けるURL HttpListener listener = new HttpListener(); listener.Prefixes.Add(prefix); // プレフィックスの登録 listener.Start(); while (true) { HttpListenerContext context = listener.GetContext(); HttpListenerRequest req = context.Request; HttpListenerResponse res = context.Response; Console.WriteLine(req.RawUrl); Console.WriteLine("---QueryString---"); Console.WriteLine(req.QueryString); res.Close(); } }