Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 1|Odpowiedź: 0

[Źródło] .NET/C# wykorzystuje Socket do wysyłania żądań HTTP(s) opartych na protokole Hypertext Transfer Protocol

[Skopiuj link]
Opublikowano44 sekundy temu | | | |
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:
POBIERZ /hello.txt HTTP/1.1
User-Agent: curl/7.64.1
Host: Logowanie do linku jest widoczne.
Accept-Language: en, mi

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.




Poprzedni:Podsumowanie testów HTTP(s) (Aktualizowane na bieżąco)
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com