Home >Backend Development >Golang >How to make SOAP request using Golang

How to make SOAP request using Golang

PHPz
PHPzOriginal
2023-04-05 09:09:431289browse

With the development of the Internet, Web services are becoming more and more important. SOAP is a Web service protocol that uses XML as an encoding method. It uses XML-based protocols to transmit data, usually using the HTTP protocol as the underlying transport protocol. As an emerging programming language, Go language also has an XML processing library that supports SOAP. The following will introduce in detail how to use Golang to perform SOAP requests.

1. Install related dependencies and libraries

We first need to install the golang development environment, which can be obtained through the following link: https://golang.org/dl/. Download the corresponding version according to your operating system and install it.
Then, we need to install the following two libraries:

  1. net/http
    net/http library is one of the standard libraries of the Go language, providing the implementation of HTTP client and server. . In a SOAP request, we use this to send an HTTP POST request, and receive the response.
  2. encoding/xml
    encoding/xml library provides encoding and decoding functions for XML documents. Through this library, we can package the XML format data of the SOAP request into an HTTP POST request and send it to the Web service, and read the XML document from the Web service response.

After the installation is complete, we can start writing code.

2. Create a SOAP request

In Golang, you can create a SOAP request through the following code:

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
}

This code defines an Envelope structure, which represents the SOAP report arts. Inside it, there is a Body structure, which represents the message body in the SOAP message. Usually we need to define a Request structure to describe the specific content of the SOAP request. In the init() function, we create an instance of the SOAP request and modify the Envelope and Request properties as needed to set the appropriate SOAP request.

3. Send SOAP request

Before sending the SOAP request, we need to package the SOAP message data into a byte array in the Body of the HTTP POST request, and set the Header of the HTTP request. The code is as follows:

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()

After sending the request, we need to check the return result and parse the response. The code is as follows:

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

This code parses the response result, converts it into a string and prints the output.

4. Summary

The above is the entire process of using Golang to make SOAP requests, including creating SOAP requests, sending SOAP requests and parsing responses. It is worth mentioning that the process of using Golang to perform SOAP requests has the advantages of high flexibility, easy reading and writing, and fast running speed, and is suitable for developing Web services of various sizes. If you also want to try using Go language for SOAP processing, then hurry up and practice it!

The above is the detailed content of How to make SOAP request using Golang. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn