Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 1|Ответ: 0

[Источник] .NET/C# использует Socket для отправки HTTP(s) запросов на основе протокола передачи гипертекста

[Скопировать ссылку]
Опубликовано44 секунды назад | | | |
Требования: Каждый день, при открытии веб-страниц или приложений, информация, которую вы просматриваете, почти всегда получается с помощью ответов на запросы через HTTP или HTTPS. Использование C# на основе протокола передачи гипертекста и нативных сокетов для отправки HTTP-запросов.

соглашение

Протокол передачи гипертекста (HTTP) — это протокол бессостоятельного уровня приложений, используемый для распределённых, совместных гипертекстовых информационных систем.

Протокол HTTP / 1.1 (RFC 9112):Вход по гиперссылке виден.
HTTP семантика (RFC 9110):Вход по гиперссылке виден.

Пример запроса:
ПОЛУЧИТЬ /hello.txt HTTP/1.1
User-Agent: curl/7.64.1
Host: Вход по гиперссылке виден.
Accept-Language: en, mi

Пример ответа:
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 байт.




Предыдущий:Обзор тестового сайта HTTP(а) (постоянно обновляется)
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com