Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 1|Respuesta: 0

[Fuente] .NET/C# utiliza Socket para enviar solicitudes HTTP(s) basadas en el Protocolo de Transferencia de Hipertexto

[Copiar enlace]
Publicado enHace 44 segundos | | | |
Requisitos: Cada día, al abrir páginas web o aplicaciones, la información que navegas casi siempre se accede enviando respuestas HTTP o HTTPS. Uso de C# basado en el Protocolo de Transferencia de Hipertexto y sockets nativos para enviar solicitudes HTTP.

acuerdo

El Protocolo de Transferencia de Hipertexto (HTTP) es un protocolo de capa de aplicación sin estado utilizado para sistemas de información hipertexto distribuidos y colaborativos.

HTTP / Protocolo 1.1 (RFC 9112):El inicio de sesión del hipervínculo es visible.
Semántica HTTP (RFC 9110):El inicio de sesión del hipervínculo es visible.

Ejemplo de solicitud:
GET /hello.txt HTTP/1.1
User-Agent: curl/7.64.1
Host: El inicio de sesión del hipervínculo es visible.
Accept-Language: en, mi

Respuesta de ejemplo:
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

¡Hola mundo! Mi contenido incluye un CRLF que sigue en el mercado.

El socket envía solicitudes

El código fuente es el siguiente:
El código fuente permite enviar solicitudes a protocolos HTTP y HTTPS. Como se muestra a continuación:



Conexión: cerca vs mantener-vivo

Si usas ReadToEndAsync para leer todos los datos de la respuesta, necesitas configurar la Conexión para que cierre. Si la configuras en mantenerse viva, la respuesta ReadToEndAsync se congelará. Razones para no congelarse: Muchos servidores web (como Nginx, Apache o ciertos gateways de API) iniciarán activamente un paquete FIN para cerrar la conexión TCP si el cliente es nativo para escribir un socket sin acción posterior, o si el servidor activa un tiempo de espera (normalmente fijado en 5 segundos).

Pipeline HTTP, enviando múltiples solicitudes simultáneamente:El inicio de sesión del hipervínculo es visible.

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

FDD8 es un número hexadecimal que especifica el tamaño del siguiente bloque de datos (en bytes). Convertir fdd8 de hexadecimal a decimal da como resultado 65.016 bytes. Esto significa que inmediatamente después de fdd8 y CRLF hay 65.016 bytes de datos. Después de eso, puede haber más bloques de datos hasta que se encuentre un bloque de tamaño 0, lo que indica que la transmisión ha terminado.

FDD8 indica al receptor que el siguiente bloque de datos tiene una longitud de 65.016 bytes.




Anterior:Resumen del sitio de prueba HTTP(s) (Actualizado continuamente)
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com