>백엔드 개발 >Golang >Golang을 사용하여 SOAP 요청을 만드는 방법

Golang을 사용하여 SOAP 요청을 만드는 방법

PHPz
PHPz원래의
2023-04-05 09:09:431290검색

인터넷의 발달과 함께 웹 서비스의 중요성이 더욱 커지고 있습니다. SOAP는 XML을 인코딩 방법으로 사용하는 웹 서비스 프로토콜입니다. XML 기반 프로토콜을 사용하여 데이터를 전송하며 일반적으로 HTTP 프로토콜을 기본 전송 프로토콜로 사용합니다. 신흥 프로그래밍 언어인 Go 언어에는 SOAP를 지원하는 XML 처리 라이브러리도 있습니다. 다음에서는 Golang을 사용하여 SOAP 요청을 만드는 방법을 자세히 소개합니다.

1. 관련 종속성 및 라이브러리 설치

먼저 다음 링크를 통해 얻을 수 있는 golang 개발 환경을 설치해야 합니다: https://golang.org/dl/. 운영 체제에 따라 해당 버전을 다운로드하여 설치하십시오.
그런 다음 다음 두 라이브러리를 설치해야 합니다.

  1. net/http
    net/http 라이브러리는 Go 언어의 표준 라이브러리 중 하나이며 HTTP 클라이언트 및 서버 구현을 제공합니다. SOAP 요청에서는 이를 사용하여 HTTP POST 요청을 보내고 응답을 받습니다.
  2. encoding/xml
    encoding/xml 라이브러리는 XML 문서에 대한 인코딩 및 디코딩 기능을 제공합니다. 이 라이브러리를 통해 SOAP 요청의 XML 형식 데이터를 HTTP POST 요청으로 패키징하여 웹 서비스로 보내고 웹 서비스 응답에서 XML 문서를 읽을 수 있습니다.

설치가 완료되면 코드 작성을 시작할 수 있습니다.

2. SOAP 요청 생성

Golang에서는 다음 코드를 통해 SOAP 요청을 생성할 수 있습니다.

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
}

이 코드는 SOAP 메시지를 나타내는 Envelope 구조를 정의합니다. 그 안에는 SOAP 메시지의 메시지 본문을 나타내는 Body 구조가 있습니다. 일반적으로 SOAP 요청의 특정 내용을 설명하기 위해 요청 구조를 정의해야 합니다. init() 함수에서 SOAP 요청의 인스턴스를 생성하고 적절한 SOAP 요청을 설정하는 데 필요한 Envelope 및 Request 속성을 수정합니다.

3. SOAP 요청 보내기

SOAP 요청을 보내기 전에 SOAP 메시지 데이터를 HTTP POST 요청 본문의 바이트 배열로 패키징하고 HTTP 요청 헤더를 설정해야 합니다. 코드는 다음과 같습니다.

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

요청을 보낸 후 반환 결과를 확인하고 응답을 구문 분석해야 합니다. 코드는 다음과 같습니다.

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

응답 결과를 파싱하여 문자열로 변환하여 출력하는 코드입니다.

4. 요약

위는 SOAP 요청 생성, SOAP 요청 전송 및 응답 구문 분석을 포함하여 Golang을 사용하여 SOAP 요청을 만드는 전체 프로세스입니다. Golang을 사용하여 SOAP 요청을 수행하는 프로세스는 유연성이 높고 읽기 및 쓰기가 쉽고 실행 속도가 빠르다는 장점이 있으며 다양한 규모의 웹 서비스를 개발하는 데 적합하다는 점을 언급할 가치가 있습니다. SOAP 처리에 Go 언어를 사용해 보고 싶다면 서둘러서 연습해 보세요!

위 내용은 Golang을 사용하여 SOAP 요청을 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.