使用在python中不起作用的套接字发布请求

使用在python中不起作用的套接字发布请求,python,Python,我有以下python代码: client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(("example.com", 443)) client.send(b'POST /api HTTPS/1.1\r\nHost: example.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20

我有以下python代码:

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
client.connect(("example.com", 443))
client.send(b'POST /api HTTPS/1.1\r\nHost: example.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0\r\nAccept-Encoding: gzip, deflate\r\nAccept: application/json\r\nConnection: keep-alive\r\nContent-Type: application/json\r\nAuthoriation: aa\r\nContent-Length: 22\r\n\r\n')
client.send(b'{"jsonPostData": "aaa"}')
response = client.recv(4096)
response = repr(response)

但是它返回了一个400错误的请求错误,没有内容,我尝试了相同的头和json请求和aiohttp,在这两种情况下,你知道我做错了什么吗?

你正在尝试使用非SSL连接连接到SSL端口


尝试使用请求库。尝试连接到端口80。

永远不要编写自己的http客户端,如果您不是TCP、TLS、http和API设计方面的专家,它既不健壮也不方便

至于您的代码片段,您不能使用普通套接字进行安全连接,您必须使用安全套接字

导入套接字
导入ssl
def请求(sock):
短袜(
b'POST/POST HTTP/1.1\r\n'
b'主机:postman echo.com\r\n'
用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64;rv:83.0)Gecko/20100101 Firefox/83.0\r\n
#b'Accept-Encoding:gzip,deflate\r\n'#您真的想处理它吗?
b'accept:application/json\r\n'
b'连接:保持活动\r\n'
b'content-type:application/json\r\n'
b'内容长度:14\r\n'
b'\r\n'
b'{“qwe”:“rty”}
)
回收袜子回收(4096)
如果名称=“\uuuuu main\uuuuuuuu”:
tls=真#切换
context=ssl.create\u default\u context()
将socket.socket(socket.AF_INET,socket.SOCK_STREAM)作为SOCK:
如果不是tls:
sock.connect((“postman echo.com”,80))
响应=请求(sock)
其他:
使用context.wrap_socket(sock,server_hostname=“postman echo.com”)作为ssock:
ssock.connect((“postman echo.com”,443))
响应=请求(ssock)
打印(答复)
从回应

"json": {"qwe":"rty"}

通常,使用更容易。您是否故意选择使用
socket
?如果不是:我故意使用它,因为它更快或多个请求。您是否将连接池/会话用于aiohttp/请求?为什么您说它对于多个请求更快?您是否正在尝试向非常远的服务器发出请求?比如从亚洲请求美国服务器?如果是这样的话,我有一些在这种情况下使用请求的经验。如前所述,池和会话非常有用。还有一些其他的tipsIt自动切换到HTTPS,我会编辑评论,但这不是问题。什么会自动切换到HTTPS?
socket
模块的级别非常低,没有任何自动功能。Web服务器将我重定向到httpsThanks以获取答案,但我仍然收到相同的错误请求响应。答案中的代码按原样工作?如果你什么都不改变。是的,是我的错,用错误的方式改变了帖子的主体