« SQLite を直接触るのは・・・ | メイン | ツリーをRDBへ »

2006年03月05日

mixi Alert 開発日誌:: WinInet 以外を考える

    

別に WinInet を使っていても大して困らないと思うけど、IEバージョン依存の問題や移行を考える時のために他の手を探した。

WinSockを使って1からゴリゴリと言うような骨の折れることは初めから考えないとして、良さそうなライブラリがないかググって見るがすぐには出てこない。
そこで、wxWidgets の wxHTTP が使えないかやってみた。

wxbase26_net.lib wxbase26.lib wsock32.lib をリンクすれば使えるみたい。
使い方は次のような感じ。(エラー処理をまったくしていないのでこのままでは使えない)

#include <stdio.h>
#include "wx/protocol/http.h"
#include <vector>
#include <memory>

int main( int argc, char *argv[] )
{
  wxHTTP http;
  http.Connect(wxT("www.kaede-software.com"));
  std::auto_ptr<wxInputStream> in( http.GetInputStream( wxT("/") ) );
  size_t size = in->GetSize();
  if( size == -1 ) {
    size = 256 * 1024; // 256KBと仮定
  }
  std::vector<char> data(size,0);
  in->Read( &(data.at(0)), size ) );
  printf( "%s", &(data.at(0)) );
}

これでhttp経由でデータを取ってこれる。
POSTを使ったり、クッキーを使ったりする場合はもう少しいろいろとする必要があるけど、結構手軽に利用できる。
上記のプログラムで実行ファイルのサイズは184KB。
wxWidgets の wxHTTP を使うのもありかもしれないな。



投稿者 Takenori : 2006年03月05日 22:38




comments powered by Disqus
Total : Today : Yesterday : なかのひと