プログラミングメモ →目次


HTTPサーバーからファイルをダウンロードするAPI(VC++)

HTTPサーバーからファイルをダウンロードする為に、下記のAPIで簡単に実現できます。このAPIは、ファイルをダウンロードするのは勿論ですが、「http://search.yahoo.co.jp/search?p=softist&ei=UTF-8&x=wrt」のように、パラメータをサーバーに伝えることもできます。

HRESULT URLDownloadToFile(LPUNKNOWN pCaller,
                                          LPCTSTR szURL,
                                          LPCTSTR szFileName,
                                          DWORD dwReserved,
                                          LPBINDSTATUSCALLBACK lpfnCB);

ダウンロードしようとファイルがローカルにキャッシュされている場合は、下記のAPIでで削除してから、上記の関数を呼び出します。

BOOL DeleteUrlCacheEntry(LPCTSTR lpszUrlName);

例:Yahooのlogoをクリアしてから、ダウンロードして、Dドライブにファイル名をyahoo_logo.gifに変えて保存します。

#include "wininet.h"
void DownloadYahooLogo()
{
    BOOL bRet = DeleteUrlCacheEntry(_T("http://k.yimg.jp/images/top/sp/logo.gif"));
    HRESULT hRes = URLDownloadToFile( NULL, 
                                                         _T("http://k.yimg.jp/images/top/sp/logo.gif"), 
                                                         _T("D:\\yahoo_logo.gif"), 
                                                         0,
                                                         NULL);
}