Wymagania: Codziennie, podczas otwierania stron internetowych lub aplikacji, informacje, które przeglądasz, są niemal zawsze dostępne poprzez wysyłanie odpowiedzi na żądania HTTP lub HTTPS. Używanie C# opartego na Hypertext Transfer Protocol oraz natywnych gniazd do wysyłania żądań HTTP.
umowa
Protokół Transferu Hipertekstu (HTTP) to protokół bezstanowej warstwy aplikacji stosowany w rozproszonych, współpracujących systemach informacji hipertekstowej.
Protokół HTTP / 1.1 (RFC 9112):Logowanie do linku jest widoczne. Semantyka HTTP (RFC 9110):Logowanie do linku jest widoczne.
Przykładowe żądanie:
Przykładowa odpowiedź:
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
Witaj świecie! Moje treści obejmują końcowy CRLF.
Socket wysyła żądania
Kod źródłowy przedstawia się następująco:
Kod źródłowy obsługuje wysyłanie żądań do protokołów HTTP i HTTPS. Jak pokazano poniżej:
Połączenie: blisko vs utrzymanie przy życiu
Jeśli używasz ReadToEndAsync do odczytu wszystkich danych z odpowiedzi, musisz ustawić Połączenie na zamknięcie. Jeśli ustawisz je na tryb "keep-alive", odpowiedź ReadToEndAsync zawiesza się. Powody niezawieszania: Wiele serwerów WWW (takich jak Nginx, Apache lub niektóre bramy API) aktywnie inicjuje pakiet FIN, aby zamknąć połączenie TCP, jeśli klient jest natywnie do zapisywania gniazda bez dalszej akcji, lub jeśli serwer wywoła wyłączenie (zwykle ustawione na 5 sekund).
Potok HTTP, wysyłający jednocześnie wiele żądań:Logowanie do linku jest widoczne.
Transfer-Encoding: chunked 表示数据是以分块的形式传输的。每个数据块前面都有一个指示该块大小的十六进制数字,这个数字后面跟着一个换行符(CRLF),然后是实际的数据内容,再接着另一个换行符来结束这一块。这种编码方式允许服务器在不知道全部内容长度的情况下开始发送数据。
FDD8 jest takim numerem szesnastkowym, który określa rozmiar następującego bloku danych (w bajtach). Przeliczenie fdd8 z systemu szesnastkowego na dziesiętne daje 65 016 bajtów. Oznacza to, że bezpośrednio po fdd8 i CRLF znajduje się 65 016 bajtów danych. Po tym może być więcej bloków danych, aż natrafi się na blok o rozmiarze 0, co oznacza zakończenie transmisji.
FDD8 informuje odbiorcę, że następny blok danych ma długość 65 016 bajtów. |