Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 1|Jawab: 0

[Sumber] .NET/C# menggunakan Socket untuk mengirim permintaan HTTP berdasarkan Hypertext Transfer Protocol

[Salin tautan]
Diposting pada44 detik yang lalu | | | |
Persyaratan: Setiap hari, saat membuka halaman web atau aplikasi, informasi yang Anda telusuri hampir selalu diakses dengan mengirimkan respons permintaan HTTP atau HTTPS. Menggunakan C# berdasarkan Hypertext Transfer Protocol dan socket native untuk mengirim permintaan HTTP.

sepakat

Protokol Transfer Hiperteks (HTTP) adalah protokol lapisan aplikasi tanpa keadaan yang digunakan untuk sistem informasi hiperteks kolaboratif yang terdistribusi.

Protokol HTTP / 1.1 (RFC 9112):Login hyperlink terlihat.
Semantik HTTP (RFC 9110):Login hyperlink terlihat.

Contoh permintaan:
DAPATKAN /hello.txt HTTP/1.1
User-Agent: curl/7.64.1
Host: Login hyperlink terlihat.
Accept-Language: en, mi

Contoh respons:
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

Halo Dunia! Konten saya mencakup CRLF trailing.

Socket mengirim permintaan

Kode sumbernya adalah sebagai berikut:
Kode sumber mendukung pengiriman permintaan ke protokol HTTP dan HTTPS. Seperti yang ditunjukkan di bawah ini:



Koneksi: tutup vs tetap hidup

Jika Anda menggunakan ReadToEndAsync untuk membaca semua data dari respons, Anda perlu mengatur Connection ke tutup. Jika Anda mengaturnya ke keep-alive, respons ReadToEndAsync akan membeku. Alasan tidak membekukan: Banyak server web (seperti Nginx, Apache, atau gateway API tertentu) akan aktif memulai paket FIN untuk menutup koneksi TCP jika klien native untuk menulis socket tanpa tindakan lanjutan, atau jika server memicu timeout idle (biasanya diatur 5 detik).

HTTP pipeline, mengirim beberapa permintaan secara bersamaan:Login hyperlink terlihat.

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

FDD8 adalah angka heksadesimal yang menentukan ukuran blok data berikut (dalam byte). Mengonversi fdd8 dari heksadesimal ke desimal menghasilkan 65.016 byte. Ini berarti segera setelah fdd8 dan CRLF terdapat 65.016 byte data. Setelah itu, mungkin ada lebih banyak blok data sampai blok berukuran 0 ditemukan, menandakan transmisi selesai.

FDD8 memberi tahu penerima bahwa blok data berikutnya memiliki panjang 65.016 byte.




Mantan:Ringkasan Situs Uji HTTP (Diperbarui Secara Terus-menerus)
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com