Flask - 如何从非HTTP请求中读取原始输入?

时间:2016-09-12 05:49:12

标签: python http flask

我有一个向网络服务器发送命令的设备。我已将这些命令重定向到我自己的服务器,目的是使用该设备运行我系统的另一部分。简而言之,设备发送命令,我拦截它们并使用它们。

命令发送到我的服务器,但不是有效的HTTP请求。我试图使用flask来阅读python,因为我想让这些命令直接进入另一个Web应用程序。

请注意,我无法更改命令的发送方式。

使用套接字,我可以读取数据。例如,这是通过套接字发送的数据版本(数据没有意义,只是为了说明):

b'#123456#A'

相反,HTTP消息如下所示:

b'POST / HTTP/1.1\r\nHost: 123.123.123.123:12345\r\nRequest info here'

我知道如何过滤这些(它们总是以#开头)。我可以挂钩以让我以不同的方式处理这些请求,在将它们解析为HTTP请求之前吗?

更新:我用来读取请求的代码,以防它提供上下文:

import socket 

host = '' 
port = 5000
backlog = 5 
size = 1024 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind((host,port)) 
s.listen(backlog) 
while 1: 
    client, address = s.accept() 
    data = client.recv(size)
    print("Request:")
    print(data)
    print("\n\n")
    if data: 
        client.send(data) 
    client.close()

0 个答案:

没有答案