• 締切済み

InternetReadFile関数でHTMLデータをメモリに格納

HTMLソースをメモリに格納したいのですが、 以下のように1000バイトずつデータをBuffに格納するのはできたのですが、 HTMLファイル全てのデータをメモリに格納する場合はどのようにしたらいいのでしょうか? char Buff[1000]; for(;;){  ReadSize = 1000;  bResult = InternetReadFile ( hFile, Buff, 1000, &ReadSize );  //全て読み込み終わるとループを抜ける  if( bResult && (ReadSize == 0) ) break;  Buff[ReadSize] = '\0'; }

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#2>index.htmlを付加したらエラーになります。 あら、ほんとですね。 でも、とりあえず http://www.gyao.jp で、ダウンロードは、できました。 最悪、コンテンツ長が得られない場合、ファイルとして保存したらどうでしょうか。(ファイルからは、サイズが得られるでしょうし)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

#1>http://www.yahoo.co.jpのHTMLソースを取得する場合 InternetOpenUrlで、 "http://www.yahoo.co.jp" を指定したら、取得できます。 大抵のWEBサーバーでは、デフォルトでindex.htmlになっているので、 "http://www.yahoo.co.jp/index.html" でいいですが、 "http://www.yahoo.co.jp" を指定しても、 "http://www.yahoo.co.jp/index.html" を返してくれます。 (実際試してみました)

the-ai
質問者

補足

もし、index.htmlで得られないWebサーバーでは、 HttpOpenRequest()→HttpQueryInfo()の流れはできないのでしょうか? GYAOのページでは、http://www.gyao.jp/にindex.htmlを付加したらエラーになります。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

http://support.microsoft.com/default.aspx?scid=/isapi/gomscom.asp?target=/japan/support/kb/articles/jp234/9/13.asp みたいにして、取得するファイルのサイズを得られるので、 それから、malloc などで、メモリ上にバッファを確保すればいいと思います。

the-ai
質問者

補足

今、InternetOpen()→InternetOpenUrl()でファイルを開いています。 InternetOpen()→InternetConnect()→HttpOpenRequest()の場合、リクエストにはGETであることはわかりますが、例えば、http://www.yahoo.co.jpのHTMLソースが欲しいときは、HttpOpenRequest()の引数に取得HTMLファイル名はないような気がします。 もし、index.htmlなどのようなHTMLファイルではなく、http://www.yahoo.co.jpのHTMLソースを取得する場合は、InternetConnection(),HttpOpenRequest()の引数はどのように指定したらいいのでしょうか? よろしくお願い致します。

関連するQ&A

専門家に質問してみよう