如何发送一个普通的HTTP请求到URL?

时间:2018-10-21 18:36:13

标签: python python-3.x sockets python-requests

我有一个由邮递员生成的http请求:

GET http://google.com/ HTTP/1.1
cache-control: no-cache
User-Agent: PostmanRuntime/7.3.0
Accept: */*
Host: google.com
accept-encoding: gzip, deflate
Connection: keep-alive

我正在通过python中的套接字从客户端接收这些类型的http请求,我想将其发送到其指定的url。

我熟悉请求库,但是考虑到客户端可以发送任何类型的http请求这一事实,分解请求并重新构建请求似乎效率不高。

是否有任何简便方法将请求直接发送到其网址?

先谢谢您

1 个答案:

答案 0 :(得分:1)

显然,实现此目的的一种方法是使用注释中提到的TCP套接字,可以这样完成:

server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
port = 80
try:
    server_socket.connect((url,port))
    server_socket.send(str.encode(body)) # encoding needed for streaming in bytes
except socket.error as e:
    print(str(e))
    sys.exit(1)

作为旁注,URL不得包含“ http://”或“ https://”。如果是这样,则会引发错误