Я пытаюсь получить параметры первым и последним из тела запроса POST.По сути у меня есть сокет-сервер.Этот сокет-сервер получает клиент при подключении и создает файл client= connection.makefile("wrb")
.
...
b'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0\r\n'
b'Accept-Language: en-US,en;q=0.5\r\n'
b'Referer: http://localhost:8080/app-index\r\n'
b'Content-Length: 22\r\n'
b'Upgrade-Insecure-Requests: 1\r\n'
b'first=dasda&last=dasda'
Теперь я просматриваю файл с помощью readline ().
while 1:
line = client.readline()
print(line)
if("Content-Length" in line.decode("utf-8")):
num=line.decode("utf-8")
"if line doesnt have \n break":
break
temp = client.read(int(num[16:]))
Переменная num
- это длина содержимого тела.Теперь я пытаюсь найти способ сломать время, когда оно достигает тела, и использовать read(num)
, чтобы прочитать содержимое тела, а затем обработать их дальше.
Я не знаю, где еще можнопойти с этим - если есть более эффективный способ чтения необработанных данных POST, я бы хотел услышать это, но я не могу использовать какие-либо модули или импорт (я бы хотел использовать модуль requests
, но это просто не вариант).
Проблема с кодом выше в том, что когда дело доходит до тела, оно никогда не останавливается, потому что ищет последний \n
.Я не могу добавить его к клиенту, потому что client.write()
возвращает заголовок клиенту.
Я пробовал много вещей, я пробовал readline()
, read()
, readlines()
, но дело в том же - мне нужно прекратить чтение в начале body()
иМне нужно сделать это без каких-либо других модулей