HttpSendRequestでリダイレクト先のパスを取得するには?


落武者  2005-07-10 10:00:21  No: 90914

私はVB初心者で、VBで困ったときにはこの板を参考にさせて頂いています。
さて、今回VB6.0を使用してファイルダウンローダ(HTTP)を
作成しているのですが、指定したファイルがリダイレクトされている場合、
通常ですとサーバからコード「302 Moved Temporarily」が返されると思う
のですが、リクエストが悪いのか「400 Bad request」が返されます。

以下のURLに対して、次のような要求を投げています。

URL:http://www.vector.co.jp/pack/win95/amuse/icon/y_256f1.lzh

リクエスト:
GET http://www.vector.co.jp/pack/win95/amuse/icon/y_256f1.lzh HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Referer: http://www.ix.sakura.ne.jp/~yoshi/icon/folico.htm
Accept-Language: ja
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: www.vector.co.jp

ブラウザ(IE6.0)で確認すると、以下のレスポンスが返って来ております。

レスポンス:
HTTP/1.1 302 Moved Temporarily
Server: Netscape-Enterprise/6.0
Date: Sat, 09 Jul 2005 15:37:42 GMT
Location: http://download.vector.co.jp/pack/win95/amuse/icon/y_256f1.lzh
Content-length: 0
Content-type: text/html
Proxy-Connection: close
Connection: close

VBでやるとなぜか400・・・

以下にソースの抜粋を記載させて頂ます。

hIntnet = InternetOpen("Sample", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
hConnect = InternetConnect(hIntnet, "www.vector.co.jp", INTERNET_DEFAULT_HTTP_PORT, strUser, strPass, INTERNET_SERVICE_HTTP, 0, 0)
hHttpOpenRequest = HttpOpenRequest(hConnect, "GET", "/pack/win95/amuse/icon/y_256f1.lzh", "HTTP/1.0", "http://www.ix.sakura.ne.jp/~yoshi/icon/folico.htm", 0, INTERNET_FLAG_RELOAD, 0)
'「strHeaders」には上記のリクエストが代入されています。
hHttpSendRequest = HttpSendRequest(hHttpOpenRequest, strHeaders, Len(strHeaders), vbNullString, 0)

'応答コードを取得
Ret = HttpQueryInfo(hHttpOpenRequest, HTTP_QUERY_STATUS_CODE, strBuf, lngBufLen, 0)

ブラウザと同じ要求を投げている(はず)なのに、なぜレスポンスが
違うのでしょうか・・・
長文になり申し訳ありませんが、よろしくお願い致します。


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

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






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