Требования: Каждый день, при открытии веб-страниц или приложений, информация, которую вы просматриваете, почти всегда получается с помощью ответов на запросы через HTTP или HTTPS. Использование C# на основе протокола передачи гипертекста и нативных сокетов для отправки HTTP-запросов.
соглашение
Протокол передачи гипертекста (HTTP) — это протокол бессостоятельного уровня приложений, используемый для распределённых, совместных гипертекстовых информационных систем.
Протокол HTTP / 1.1 (RFC 9112):Вход по гиперссылке виден. HTTP семантика (RFC 9110):Вход по гиперссылке виден.
Пример запроса:
Пример ответа:
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain
Здравствуйте, Мир! В моём контенте есть следящий CRLF.
Socket отправляет запросы
Исходный код следующий:
Исходный код поддерживает отправку запросов на протоколы HTTP и HTTPS. Как показано ниже:
Связь: закрыть против сохранения
Если вы используете ReadToEndAsync для чтения всех данных из ответа, необходимо установить Соединение на закрытие. Если вы установите режим сохранения активного, ответ ReadToEndAsync зависнет. Причины не зависать: Многие веб-серверы (такие как Nginx, Apache или некоторые шлюзы API) активно запускают пакет FIN для закрытия TCP-соединения, если клиент нативно записывает сокет без последующих действий или если сервер запускает тайм-аут в режиме простоя (обычно установлен на 5 секунд).
HTTP-конвейер, отправляющий несколько запросов одновременно:Вход по гиперссылке виден.
Transfer-Encoding: chunked 表示数据是以分块的形式传输的。每个数据块前面都有一个指示该块大小的十六进制数字,这个数字后面跟着一个换行符(CRLF),然后是实际的数据内容,再接着另一个换行符来结束这一块。这种编码方式允许服务器在不知道全部内容长度的情况下开始发送数据。
FDD8 — это такое шестинадцатеричное число, которое указывает размер следующего блока данных (в байтах). Преобразование fdd8 из шестнадцатеричного в десятичное даёт 65 016 байт. Это означает, что сразу после fdd8 и CRLF — 65 016 байт данных. После этого могут появиться дополнительные блоки данных, пока не встретится блок размера 0, что означает завершение передачи.
FDD8 сообщает приемнику, что следующий блок данных имеет длину 65 016 байт. |