Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 1|Antwort: 0

[Quelle] .NET/C# verwendet Socket, um HTTP(s)-Anfragen basierend auf dem Hypertext Transfer Protocol zu senden

[Link kopieren]
Veröffentlicht amVor 44 Sekunden | | | |
Anforderungen: Jeden Tag werden beim Öffnen von Webseiten oder Apps die Informationen, die Sie durchsuchen, fast immer durch das Senden von HTTP- oder HTTPS-Anfragen abgerufen. Verwendung von C# basierend auf dem Hypertext Transfer Protocol und nativen Sockets, um HTTP-Anfragen zu senden.

Vereinbarung

Das Hypertext Transfer Protocol (HTTP) ist ein zustandsloses Anwendungsschicht-Protokoll, das für verteilte, kollaborative Hypertext-Informationssysteme verwendet wird.

HTTP / 1.1-Protokoll (RFC 9112):Der Hyperlink-Login ist sichtbar.
HTTP-Semantik (RFC 9110):Der Hyperlink-Login ist sichtbar.

Beispielwunsch:
GET /hello.txt HTTP/1.1
User-Agent: curl/7.64.1
Host: Der Hyperlink-Login ist sichtbar.
Accept-Language: en, mi

Beispielantwort:
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

Hallo Welt! Mein Inhalt enthält eine nachlaufende CRLF.

Socket sendet Anfragen

Der Quellcode ist wie folgt:
Der Quellcode unterstützt das Senden von Anfragen an HTTP- und HTTPS-Protokolle. Wie unten gezeigt:



Verbindung: nah vs. am Leben halten

Wenn du ReadToEndAsync verwendest, um alle Daten aus der Antwort zu lesen, musst du die Verbindung auf Schließen setzen. Wenn du sie auf Keep-alive stellst, friert die ReadToEndAsync-Antwort ein. Gründe für das Nichteinfrieren: Viele Webserver (wie Nginx, Apache oder bestimmte API-Gateways) initiieren aktiv ein FIN-Paket, um die TCP-Verbindung zu schließen, wenn der Client nativ ist, um einen Socket ohne weitere Aktion zu schreiben, oder wenn der Server eine Idle-Timeout auslöst (üblicherweise auf 5 Sekunden gesetzt).

HTTP-Pipeline, bei der mehrere Anfragen gleichzeitig gesendet werden:Der Hyperlink-Login ist sichtbar.

Transfer-Encoding: chunked 表示数据是以分块的形式传输的。每个数据块前面都有一个指示该块大小的十六进制数字,这个数字后面跟着一个换行符(CRLF),然后是实际的数据内容,再接着另一个换行符来结束这一块。这种编码方式允许服务器在不知道全部内容长度的情况下开始发送数据。

FDD8 ist eine solche hexadezimale Zahl, die die Größe des folgenden Datenblocks (in Bytes) angibt. Die Umrechnung von fdd8 von hexadezimal auf dezimal ergibt 65.016 Bytes. Das bedeutet, dass unmittelbar nach fdd8 und CRLF 65.016 Bytes Daten vorhanden sind. Danach können weitere Datenblöcke auftreten, bis ein Block der Größe 0 gefunden wird, was die Übertragung als abgeschlossen anzeigt.

FDD8 teilt dem Empfänger mit, dass der nächste Datenblock 65.016 Bytes lang ist.




Vorhergehend:HTTP(s) Teststandort-Zusammenfassung (kontinuierlich aktualisiert)
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com