ページ 11

【C++】HTTPでコンテンツを取得

Posted: 2011年5月05日(木) 19:20
by みけCAT
C++を使って、HTTPでテキストデータを取得します。
取得したデータは、std::string型で渡されます。

コード:

#include <windows.h>
#include <wininet.h>
#include <string>

int HttpGet(std::string& result,const char* url,const char* appname) {
	HINTERNET hinet,hurl;
	HANDLE hheap;
	char buf[10241];
	DWORD read;
	int total=0;
	int startpos;
	hinet=InternetOpen(appname,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
	if(hinet==NULL)return 0;
	hurl=InternetOpenUrl(hinet,url,NULL,0,0,0);
	if(hurl==NULL) {
		InternetCloseHandle(hinet);
		return 0;
	}
	hheap=HeapCreate(0,102400,0);
	if(hheap==NULL) {
		InternetCloseHandle(hinet);
		InternetCloseHandle(hurl);
		return 0;
	}
	result="";
	while(1) {
		InternetReadFile(hurl,buf,sizeof(buf)-1,&read);
		buf[read]=0;
		if(read==0)break;
		total+=read;
		result+=buf;
	}
	InternetCloseHandle(hinet);
	InternetCloseHandle(hurl);
	return 1;
}
resultに結果を格納するstd::string型変数を指定します。
urlに取得するURLを指定します。
appnameにアプリケーション名を指定します。(任意の文字列で構いません)