2015年3月11日水曜日

HTTPサーバが応答しなかった・・・ [ WEB ]

HTTP接続で、リクエストを送信しても応答のないサーバがあった。
これが、なぜかわからずハマってしまった・・・

で、あまりにアホすぎて、もう一回やりそうなので書いておく。

その理由は、リクエストの改行コードが「CRLF」なのを忘れてた。

LinuxのPythonで書いてたから・・・すっかり忘れてた。
でも「LF」だけで応答を返すサーバがいるから、やっちまうんだよな・・・って人のせいにしておこう。

今回はLinux上でのエディタでコーディングしているので改行が「LF」、よって「CR」を追加するのに「\r」を使うのだ。
import socket

port = 80
host = "localhost"
path = "/"

# ソケットの作成
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# リモートに接続
sock.connect((host, port))

req = """HEAD %s HTTP/1.1\r
User-Agent: MyCode\r
Host: %s\r
Accept: */*\r
\r
"""% (path,host)

sock.send(req.encode("ascii"))

data = sock.recv(1024)
print(data.decode("ascii"))

sock.close()

ふんどしの持ち主

  • 昔の私

0 件のコメント:

コメントを投稿