事情是我发送的信息(Alexis Ahumada 1990)永远不会停留在服务器日志上(www.inf.utfsm.cl/~mvaras/tarea1.log)我想知道什么我做错了。
#!/usr/bin/env python
import socket
import sys
HOST = 'www.inf.utfsm.cl'
GET = '/~mvaras/tarea1.php'
UA = 'tarea1'
PORT = 80
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(1)
try:
sock.connect((HOST, PORT))
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(2)
sock.send("GET %s HTTP/1.0\r\nHost: %s\r\n\r\nUser-Agent: %s\r\n\r\n" % (GET, HOST, UA))
sock.send("POST /~mvaras/tarea1.php HTTP/1.0 User-Agent:tarea1 Nombre=Alexis+Ahumada&rut=1990")
data = sock.recv(1024)
string = ""
while len(data):
string = string + data
data = sock.recv(1024)
print string
sys.exit(0)
答案 0 :(得分:1)
您不能只是POST到服务器,您必须POST到URL。在您的GET请求中,您指定了/~mvaras/tarea1.php
作为您的网址,但您没有将其指定为POST。
此外,您没有正确使用HTTP 1.1,因为您没有在the section 14 of the RFC上指定的Host
标头
客户端必须在所有HTTP / 1.1请求消息中包含Host头字段。如果请求的URI不包含所请求服务的Internet主机名,则必须为Host头字段指定一个空值。
请注意,请注意,只有在您真正需要时才使用HTTP套接字。如果您只想获取一些HTTP数据,请使用更高级别的实现。