WININETについて


さこ  2004-09-15 23:53:43  No: 10924

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;
               :
               :
               :


すずムシ  2004-09-16 05:02:37  No: 10925

lpdwReservedの値は事前に 0 にしておくべきかな。
ただし、そうしても bRetが Falseになってサイズが取得出来ない場合もあるので、
bRetは無視して、読み込めるDataが 0 になるまでループして読み込むようにした方がいいかも。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加