Пишу учебный проект, веб-сервер на C#, и столкнулся с такой проблемой, что не могу обработать на сервере запрос с формы:
POST /php/auth.php HTTP/1.1
Host: uppdd
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer:
uppdd/signin.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 62
Origin:
uppdd
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
login=admin&pass=secretpass&but=%D0%92%D0%BE%D0%B9%D1%82%D0%B8
Этот кусок кода отвечает за обработку php файла:
string html = AnyFile(link); // функция AnyFile(string addrs) - запускает интерпретатор php, передает путь на файл в виде строки и возвращает ответ string UTF-8
string content_type = GetContentType(link); // получает тип контента
int length = html.Length; // длина контента
string headers = $"HTTP/1.1 200 OK\nContent-type: {content_type}\nContent-Length: {length}\n\n{html}"; // заголовок
byte[] data_headers = Encoding.UTF8.GetBytes(headers); // перевод строки в байты UTF-8
client.GetStream().Write(data_headers, 0, data_headers.Length); // отправка байтов по сети клиенту
1. Как передать строку: login=admin&pass=secretpass&but=%D0%92%D0%BE%D0%B9%D1%82%D0%B8 - интерпретатору на обработку
2. Как правильно сформировать заголовок ответа, для такого запроса
3. Как это реализовать на C#
Сервер пищу посредством использования TCPListener/TCPClient, не используя WebReponse/Request и HttpListener.
Проект на GitHub