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
Linda Hamiltonasal
2024-12-14 16:55:12972semak imbas

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)

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

  2. Penghuraian Berulang:

    for {
        req, err := http.ReadRequest(buf)

    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)
    • 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)
    • 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})
    • Buat struct Sambungan dan tambahkannya pada strim slice.
  6. Penamatan Gelung:

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

    f, err := os.Open("/tmp/test.http")
    stream, err := ReadHTTPFromFile(f)
    • 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!

Kenyataan:
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