Понятия не имею, откуда у вас знания HTTP.Но ни ваш GET, ни ваш запрос POST не являются правильными запросами в соответствии со стандартом HTTP.Для GET вы добавляете дополнительный \r\n
в конце (т.е. GET / HTTP/1.0\r\nHost: example.com\r\n\r\n\r\n
- последний \r\n
слишком много), а для POST вы делаете то же самое, а также добавляете некоторые недействительные данные (TCRLF
) после тела запроса,
Это дополнительное \r\n
, которое вы добавляете после того, как заголовок запроса засчитывается в заданный вами Content-length
, что означает, что тело HTTP, прочитанное сервером, на два байта короче, чем тело, которое вы намеревались.Вместе с TRCLF
, который вы отправляете после тела, фактическое тело HTTP, которое вы отправляете, на 6 байт длиннее значения, которое вы задаете в заголовке Content-Length
.
Пожалуйста, обратитесь к стандарту HTTP, чтобы узнать, как должен выглядеть HTTP.нравится - вот для чего нужны стандарты.Не пытайтесь правильно понять, как работает HTTP, просто взглянув на примеры трафика или кода, которые вы найдете в Интернете.В частности, простые примеры кода часто бывают неправильными или неполными и могут работать с некоторыми серверами или в некоторых случаях использования, но не в целом.
Каждый раз, когда я передаю данные на почту, они не получают ответ.
Я не могу воспроизвести утверждение, что ответ вообще не возвращается.Принимая ваш неизмененный код, я фактически получаю ответ от сервера, который включает, среди прочего, представление серверов вашего тела ответа:
...
"data": "\r\n{'Assignment': ",
...
Это ваше предполагаемое тело с префиксом неправильного \r\n
и сокращенным на двабайт для соответствия заявленным Content-length
.При изменении вашего кода для выполнения правильных запросов без неправильных \r\n
в разных местах я получаю ожидаемое:
...
"data": "{'Assignment': 1}",
...