【发布时间】:2016-08-12 08:56:06
【问题描述】:
我正在编写一个 Python HTTP 客户端。 当我有下面的代码时,我从终端“列表索引超出范围”收到一条错误消息。
from socket import *
import sys
server_host = sys.argv[1]
server_port = sys.argv[2]
filename = sys.argv[3]
host_port = "%s:%s" %(server_host, server_port)
try:
clientSocket = socket(AF_INET,SOCK_STREAM)
clientSocket.connect((server_host,int(server_port)))
header = {
"first_header" : "GET /%s HTTP/1.1" %(filename),
"Host": host_port,
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "en-US",
}
httpHeader = "\r\n".join("%s:%s" %(item,header[item]) for item in header)
print httpHeader
clientSocket.send("%s\r\n\r\n" %(httpHeader))
except IOError:
sys.exit(1)
final = ""
responseMessage = clientSocket.recv(1024)
while responseMessage:
final += responseMessage
responseMssage = clientSocket.recv(1024)
clientSocket.close()
print "final:",final
我从命令行输入
运行程序python ./client.py http://127.0.0.1 7000 HelloWorld.html
谁能告诉我我的代码有什么问题?提前致谢。
【问题讨论】:
-
我看不出这有什么问题。尝试像这样执行它: ./client.py 127.0.0.1 7000 HelloWorld.html
-
你可以调试你的代码,不是吗?只需打印出
sys.argv看看发生了什么 -
@haifzhan 我认为这是脚本的名称。
-
你能用行号打印出确切的错误吗?信息
-
我复制了前 5 行代码,但无法重现。
标签: python python-2.7 command-line httpclient