Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 1|Répondre: 0

[Source] .NET/C# utilise Socket pour envoyer des requêtes HTTP(s) basées sur le protocole de transfert d’hypertexte

[Copié le lien]
Publié surIl y a 44 secondes | | | |
Exigences : Chaque jour, lors de l’ouverture de pages web ou d’applications, les informations que vous consultez sont presque toujours accessibles en envoyant des réponses HTTP ou HTTPS. Utilisation de C# basée sur le protocole de transfert d’hypertexte et de sockets natifs pour envoyer des requêtes HTTP.

accord

Le protocole de transfert d’hypertexte (HTTP) est un protocole de couche application sans état utilisé pour les systèmes d’information hypertexte distribués et collaboratifs.

HTTP / Protocole 1.1 (RFC 9112) :La connexion hyperlientérée est visible.
Sémantique HTTP (RFC 9110) :La connexion hyperlientérée est visible.

Exemple de demande :
GET /hello.txt HTTP/1.1
User-Agent: curl/7.64.1
Host: La connexion hyperlientérée est visible.
Accept-Language: en, mi

Exemple de réponse :
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

Bonjour le monde ! Mon contenu inclut un CRLF en retard.

Socket envoie des requêtes

Le code source est le suivant :
Le code source prend en charge l’envoi de requêtes vers les protocoles HTTP et HTTPS. Comme montré ci-dessous :



Connexion : proche vs maintien en vie

Si vous utilisez ReadToEndAsync pour lire toutes les données de la réponse, vous devez régler la Connexion pour qu’elle se ferme. Si vous la mettez en mode keep-alive, la réponse ReadToEndAsync se figera. Raisons de ne pas geler : De nombreux serveurs web (comme Nginx, Apache ou certaines passerelles API) initient activement un paquet FIN pour fermer la connexion TCP si le client est natif pour écrire un socket sans action ultérieure, ou si le serveur déclenche un délai d’attente (généralement réglé à 5 secondes).

Pipeline HTTP, envoi simultané de plusieurs requêtes :La connexion hyperlientérée est visible.

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

FDD8 est un tel nombre hexadécimal qui spécifie la taille du bloc de données suivant (en octets). Convertir fdd8 d’hexadécimal à décimal donne 65 016 octets. Cela signifie qu’immédiatement après fdd8 et CRLF se trouvent 65 016 octets de données. Après cela, il peut y avoir d’autres blocs de données jusqu’à ce qu’un bloc de taille 0 soit rencontré, indiquant que la transmission est terminée.

FDD8 indique au récepteur que le bloc de données suivant mesure 65 016 octets.




Précédent:Résumé du site d’essai HTTP(s) (Mise à jour continue)
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com