Perl socketでヘッダ部取得

[上に] [前に] [次に]
Coo [E-Mail] [HomePage] 2000/05/20(土) 17:21:05
Perlのsockketを使ってファイルサイズ、更新日時取得をしようと思ったのですが、

print S "HEAD http://$target$filename HTTP/1.1\r\n";
print S "User-Agent: $UserAgent\r\n$Option\r\n";



print S "GET $filename\r\n";
print S "User-Agent: $UserAgent\r\n";
# Sはソケット名 $targetは取得先のサーバー名 $filenameは取得したいファイル名

のどちらも<S>を参照すると

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=shift_jis" http-equiv=Content-Type></HEAD>
<BODY></BODY></HTML>

…というようなものを吐き出すだけでした。
ファイルサイズ/更新日時取得はこの方法ではダメでしょうか。
もしダメなら他のやり方を教えていただきたいのですが。

ween 2000/05/20(土) 18:37:28
僕もこのあたりはまだよく解ってないのですが…
この辺が参考になると思います。
http://x68000.startshop.co.jp/~68user/net/http-2.html

Coo [E-Mail] [HomePage] 2000/05/21(日) 20:35:17
ちゃんと動作するサーバーもあるので基本的なトコでは間違ってない…はずなんですが(^^;;
一応教えていただいたサイトも参考にさせていただきます。
情報ありがとうございました。

PerlのSocketに詳しい方からのさらなる情報をお待ちしています。m(__)m

B-Cus 2000/05/21(日) 23:41:21
> print S "GET $filename\r\n";
HTTP/0.9 だからでない?

Coo [E-Mail] [HomePage] 2000/05/22(月) 00:18:35
その可能性も多いにあると思うんですが…
HTTP/0.9はちょっと勉強してないので分からないです…。
print S "HEAD $filename HTTP\r\n\r\n";
としてHTTPバージョン向こう任せでやってもダメみたいでした。
ひょっとしてHTTP/0.9だとPOSTしか実装されてないとかですか?(^^;;

B-Cus 2000/05/22(月) 00:50:48
> HTTP/0.9はちょっと勉強してないので分からないです…。
GET $filename\r\n は HTTP/0.9 として解釈されます。
それがどういう意味を持つかは RFC1945 を読んで勉強して下さい。

# 全体的に、あまりにも情報が少ないです。ソースは?
# うまくいかないホストは? それ以外は全てうまくいく?

Coo [E-Mail] [HomePage] 2000/05/23(火) 22:40:33
レス遅れてすいません。m(__)m
たいていのサーバーではうまく動いてくれてるのでソースは載せなかったんです。
とりあえずサーバーからはHTTP/1.0 200返ってきてるんで…
あと、0.9打ち出してみたところ400返ってきました (^^;;
ホストは…geocitiesのレンタル関連全部ダメっぽいです。(最初の投稿と返ってくるデータは違いますが)
あとはそんなに大きい所じゃないんで致命的じゃないんですが…。

[上に] [前に] [次に]