Rumah > pembangunan bahagian belakang > Golang > Bagaimana Menghuraikan Permintaan dan Respons HTTP daripada Fail Teks dalam Go?

Bagaimana Menghuraikan Permintaan dan Respons HTTP daripada Fail Teks dalam Go?

Linda Hamilton
Lepaskan: 2024-12-14 16:55:12
asal
1033 orang telah melayarinya

How to Parse HTTP Requests and Responses from a Text File in Go?

Menghuraikan Permintaan dan Respons HTTP daripada Fail Teks dalam Go

Pengenalan
Soalan ini memfokuskan pada penghuraian fail teks yang mengandungi strim permintaan dan respons HTTP ke dalam kepingan Go bagi struktur Sambungan. Setiap struct Sambungan termasuk permintaan dan respons HTTP.

Garis Masalah
Memandangkan fail teks yang mengandungi permintaan dan respons HTTP, tugasnya adalah untuk menghuraikannya menjadi []Kepingan Sambungan. Fungsi http.ReadRequest boleh digunakan untuk menghuraikan permintaan. Walau bagaimanapun, tiada fungsi terbina dalam untuk menghuraikan respons.

Pelaksanaan
Penyelesaian melibatkan langkah berikut:

  1. Penciptaan Pembaca Buffer:

    buf := bufio.NewReader(r)
    Salin selepas log masuk

    di mana r ialah io.Reader contoh yang mewakili fail teks.

  2. Penghuraian Berulang:

    for {
        req, err := http.ReadRequest(buf)
    Salin selepas log masuk

    a. Gunakan http.ReadRequest untuk menghuraikan permintaan seterusnya dalam strim.

    b. Semak untuk EOF (err == io.EOF). Jika tercapai, keluar dari gelung.

    c. Jika ralat berlaku, kembalikan strim yang dihuraikan dengan ralat.

  3. Penghuraian Balasan:

     resp, err := http.ReadResponse(buf, req)
    Salin selepas log masuk
    • Gunakan http.ReadResponse untuk menghuraikan respons yang dikaitkan dengan permintaan.
  4. Pengendalian Badan Respons:

     b := new(bytes.Buffer)
     io.Copy(b, resp.Body)
     resp.Body.Close()
     resp.Body = ioutil.NopCloser(b)
    Salin selepas log masuk
    • Simpan badan respons kepada bait penimbal (b).
    • Tutup badan tindak balas asal (resp.Body).
    • Ganti resp.Body dengan penimbal bait.
  5. Populasi Strim:

    stream = append(stream, Connection{Request: req, Response: resp})
    Salin selepas log masuk
    • Buat struct Sambungan dan tambahkannya pada strim slice.
  6. Penamatan Gelung:

    if err == io.EOF {
        break
    }
    Salin selepas log masuk
    • Keluar dari gelung apabila http.ReadRequest mengembalikan EOF.
  7. Contoh Penggunaan:

    f, err := os.Open("/tmp/test.http")
    stream, err := ReadHTTPFromFile(f)
    Salin selepas log masuk
    • Buka fail teks dan hantar ke fungsi ReadHTTPFromFile.

Kesimpulan
Kaedah ini menghuraikan permintaan dan respons HTTP dengan berkesan daripada fail teks dan mengisi []Sambungan potong dengan data yang dihuraikan. Ia mengendalikan badan tindak balas dengan betul dan memastikan penghuraian yang betul bagi berbilang permintaan dan respons dalam aliran paip.

Atas ialah kandungan terperinci Bagaimana Menghuraikan Permintaan dan Respons HTTP daripada Fail Teks dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan