Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara membuat permintaan SOAP menggunakan Golang

Cara membuat permintaan SOAP menggunakan Golang

PHPz
PHPzasal
2023-04-05 09:09:431257semak imbas

Dengan perkembangan Internet, perkhidmatan Web menjadi semakin penting. SOAP ialah protokol perkhidmatan Web yang menggunakan XML sebagai kaedah pengekodan. Ia menggunakan protokol berasaskan XML untuk menghantar data, biasanya menggunakan protokol HTTP sebagai protokol pengangkutan asas. Sebagai bahasa pengaturcaraan yang baru muncul, bahasa Go juga mempunyai perpustakaan pemprosesan XML yang menyokong SOAP Berikut akan memperkenalkan secara terperinci cara menggunakan Golang untuk membuat permintaan SOAP.

1. Pasang kebergantungan dan perpustakaan yang berkaitan

Mula-mula kita perlu memasang persekitaran pembangunan golang, yang boleh diperolehi melalui pautan berikut: https://golang.org/dl/. Muat turun versi yang sepadan mengikut sistem pengendalian anda dan pasangkannya.
Kemudian, kita perlu memasang dua perpustakaan berikut:

  1. net/http
    Pustaka net/http ialah salah satu perpustakaan standard bahasa Go dan menyediakan pelaksanaan HTTP pelanggan dan pelayan. Dalam permintaan SOAP, kami menggunakan ini untuk menghantar permintaan HTTP POST dan menerima respons.
  2. pengekodan/xml
    pustaka pengekodan/xml menyediakan fungsi pengekodan dan penyahkodan untuk dokumen XML. Melalui perpustakaan ini, kami boleh membungkus data format XML permintaan SOAP ke dalam permintaan HTTP POST dan menghantarnya ke perkhidmatan Web, dan membaca dokumen XML daripada respons perkhidmatan Web.

Selepas pemasangan selesai, kita boleh mula menulis kod.

2. Buat permintaan SOAP

Di Golang, anda boleh membuat permintaan SOAP melalui kod berikut:

type Envelope struct {
    XMLName xml.Name `xml:"soap:Envelope"`
    SoapNs  string   `xml:"xmlns:soap,attr"`
    Body    *Body
}
type Body struct {
    XMLName xml.Name `xml:"soap:Body"`
    Req     *Request
}
type Request struct {
    XMLName        xml.Name  `xml:"MyRequest"`
    RequestContent string    `xml:"RequestContent"`
}

func CreateSOAPRequest() []byte {
    soap := &Envelope{
        SoapNs: "http://schemas.xmlsoap.org/soap/envelope/",
        Body: &Body{
            Req: &Request{
                RequestContent: "This is a sample SOAP request",
            },
        },
    }
    output, err := xml.MarshalIndent(soap, "", "    ")
    if err != nil {
        panic(err)
    }
    return output
}

Kod ini mentakrifkan struktur Sampul, yang mewakili Mesej SOAP. Di dalamnya, terdapat struktur Badan, yang mewakili badan mesej dalam mesej SOAP. Biasanya kita perlu mentakrifkan struktur Permintaan untuk menerangkan kandungan khusus permintaan SOAP. Dalam fungsi init(), kami mencipta contoh permintaan SOAP dan mengubah suai sifat Envelope dan Request seperti yang diperlukan untuk menetapkan permintaan SOAP yang sesuai.

3. Hantar permintaan SOAP

Sebelum menghantar permintaan SOAP, kita perlu membungkus data mesej SOAP ke dalam tatasusunan bait dalam Badan permintaan HTTP POST dan menetapkan Pengepala bagi permintaan HTTP. Kodnya adalah seperti berikut:

client := http.Client{}
// 设置请求地址、方法及消息体
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(CreateSOAPRequest()))
req.Header.Add("Content-Type", "text/xml;charset=utf-8")
// 发送请求
resp, err := client.Do(req)
if err != nil {
    fmt.Println("Request Error: ", err)
    return
}
defer resp.Body.Close()

Selepas menghantar permintaan, kami perlu menyemak hasil pemulangan dan menghuraikan respons. Kodnya adalah seperti berikut:

var result []byte
resp.Body.Read(result)
fmt.Println(string(result))

Kod ini menghuraikan hasil respons, menukarnya menjadi rentetan dan mencetaknya.

4. Ringkasan

Di atas ialah keseluruhan proses menggunakan Golang untuk membuat permintaan SOAP, termasuk membuat permintaan SOAP, menghantar permintaan SOAP dan menghurai respons. Perlu dinyatakan bahawa proses menggunakan Golang untuk melaksanakan permintaan SOAP mempunyai kelebihan fleksibiliti yang tinggi, membaca dan menulis yang mudah, dan kelajuan berjalan pantas, dan sesuai untuk membangunkan perkhidmatan Web dalam pelbagai saiz. Jika anda juga ingin mencuba menggunakan bahasa Go untuk pemprosesan SOAP, maka cepat dan amalkannya!

Atas ialah kandungan terperinci Cara membuat permintaan SOAP menggunakan Golang. 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