320x100
320x100

개요

: nodeJS에서 SOAP 클라이언트 프로그램을 만들어 외부 모듈과 연동

 

 

SOAP란?

: https://2mukee.tistory.com/432

 

SOAP (Simple Object Access Protocol)와 XML(eXtensible Martup Language)란? <개념과 구조/예제>

SOAP (Simple Object Access Protocol) 다른 언어로 다른 플랫폼에서 빌드된 애플리케이션이 통신할 수 있도록 설계된 최초의 표준 프로토콜 빌트인 프로토콜을 사용하여 페이지 로드 시간이 REST보다 걸림

2mukee.tistory.com

 

 

 

 

예제 코드

const axios = require('axios');

// XML 문서를 완성하고 전송까지 수행
async function request_xml(information, url) {
  const xmlDoc = `<?xml version='1.0' encoding='UTF-8'?>
                    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
                      <soap:Body xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/">
                        <ns1:MEMBER_REGEISTER>
                            <ns1:TWOMUKEECOMPANY>
                                <ns1:NAME>${information.name}</ns1:NAME>
                                <ns1:PHONE>${information.phone}</ns1:PHONE>
                                <ns1:COMMENT>${information.comment}</ns1:COMMENT>
                            </ns1:TWOMUKEECOMPANY>
                        </ns1:MEMBER_REGEISTER>
                      </soap:Body>
                    </soap:Envelope>`;

  return axios.post(url, xmlDoc, {
    headers: {
      'Content-Type': 'text/xml',
      SOAPAction: 'send_request',
    },
  });
}

async function main() {
  const information = {
    name: '2mukee',
    phone: '010-1234-5678',
    comment: `반갑습니다.`,
  };

  // 테스트 해야하는 url
  const url = 'http://testsoap.com/node';
  console.log('result =', (await request_xml(information, url)).data);
}

main();

: soap 통신의 경우 서버에 요청할 기능명을 기재하는 SOAPAction이라는 헤더가 존재한다

: SOAPAction 헤더는 soap 서버의 함수를 호출하는 것이기 때문에 정확하게 써야한다

: soap 통신 후에는 XML 태그 형식으로 response가 오기 떄문에 XML을 JSON으로 변환하는 라이브러리가 필요하다

 

 

 

XML을 JSON으로 변환하는 라이브러리

: fast-xm-parser

: xml2json

 

 

300x250
728x90