WININETを使用して、JPEGをダウンロードするプログラムを作成しています。
HttpQueryInfoにてエラーが発生して、うまくいきません。
ソースを掲載しますので、指摘のほうよろしくお願いいたします
hItnet := nil;
hHttpSession := nil;
hHttpRequest := nil;
hItnet := InternetOpen('WININET GET Program',
INTERNET_OPEN_TYPE_PRECONFIG,
nil,
nil,
0);
if (hItnet = nil) then
begin
// エラー
ShowMessage('WININETの初期化に失敗しました');
Exit;
end;
// サーバへ接続
hHttpSession := InternetConnect(hItnet,
'www.hogehoge.ne.jp',
INTERNET_DEFAULT_HTTP_PORT,
nil,
nil,
INTERNET_SERVICE_HTTP,
0,
0);
if (hHttpSession = nil) then
begin
// エラー
ShowMessage('サーバーへの接続に失敗しました');
Exit;
end;
// HTTP要求の作成
hHttpRequest := HttpOpenRequest(hHttpSession,
'GET',
'A.JPG', nil,
'http://www.hogehoge.ne.jp/IMG/',
nil,
0,
0);
if (hHttpRequest = nil) then
begin
// エラー
ShowMessage('HTTPリクエストの作成に失敗しました');
Exit;
end;
// 作成したHTTP要求の発行
bRet := HttpSendRequest(hHttpRequest,
nil,
0,
nil,
0);
if (bRet = False) then
begin
// エラー
ShowMessage('HTTP要求の発行に失敗しました');
Exit;
end;
dtSize := SizeOf(databuf);
bRet := HttpQueryInfo(hHttpRequest,
HTTP_QUERY_CONTENT_LENGTH,
@databuf,
dtSize,
lpdwReserved);
if (bRet = False) then
begin
//ここでエラー発生(コード=12150)
Exit;
end;
:
:
:
lpdwReservedの値は事前に 0 にしておくべきかな。
ただし、そうしても bRetが Falseになってサイズが取得出来ない場合もあるので、
bRetは無視して、読み込めるDataが 0 になるまでループして読み込むようにした方がいいかも。
ツイート | ![]() |