Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 1|Risposta: 0

[Fonte] .NET/C# utilizza Socket per inviare richieste HTTP(s) basate sul protocollo Hypertext Transfer Protocol

[Copiato link]
Pubblicato su44 secondi fa | | | |
Requisiti: Ogni giorno, aprendo pagine web o app, le informazioni che navighi sono quasi sempre accessibili inviando risposte a richieste HTTP o HTTPS. Utilizzo di C# basato sull'Hypertext Transfer Protocol e socket nativi per inviare richieste HTTP.

accordo

Il Protocollo di Trasferimento Ipertesto (HTTP) è un protocollo di livello applicativo senza stato utilizzato per sistemi informativi ipertestuali distribuiti e collaborativi.

Protocollo HTTP / 1.1 (RFC 9112):Il login del link ipertestuale è visibile.
Semantica HTTP (RFC 9110):Il login del link ipertestuale è visibile.

Richiesta di esempio:
GET /hello.txt HTTP/1.1
User-Agent: curl/7.64.1
Host: Il login del link ipertestuale è visibile.
Accept-Language: en, mi

Risposta esempio:
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

Ciao mondo! I miei contenuti includono un CRLF in ritardo.

Socket invia richieste

Il codice sorgente è il seguente:
Il codice sorgente supporta l'invio di richieste ai protocolli HTTP e HTTPS. Come mostrato di seguito:



Connessione: vicino vs tenere-vivo

Se usi ReadToEndAsync per leggere tutti i dati dalla risposta, devi impostare la Connessione su chiusura. Se la imposti su keep-alive, la risposta ReadToEndAsync si bloccherà. Motivi per non bloccarsi: Molti server web (come Nginx, Apache o alcuni gateway API) avvieranno attivamente un pacchetto FIN per chiudere la connessione TCP se il client è nativo per scrivere un socket senza azione successiva, o se il server attiva un timeout inattivo (di solito impostato a 5 secondi).

Pipeline HTTP, inviando più richieste simultaneamente:Il login del link ipertestuale è visibile.

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

FDD8 è un numero esadecimale che specifica la dimensione del seguente blocco dati (in byte). Convertire fdd8 da esadecimale a decimale si ottiene 65.016 byte. Ciò significa che subito dopo fdd8 e CRLF ci sono 65.016 byte di dati. Dopo di ciò, potrebbero esserci altri blocchi dati fino a quando non si trova un blocco di dimensione 0, indicando che la trasmissione è completata.

FDD8 indica al ricevitore che il prossimo blocco dati è lungo 65.016 byte.




Precedente:Riepilogo del sito di prova HTTP(s) (aggiornato continuamente)
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com