2023-02-08
1. 방법
방법은 간단하다. soap:Envelope 형태를 가지는 String 객체를 바이트로 변경 > inputStream 담고 이후 MessageFactory를 통해 SOAPMessage를 만들면 된다.
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPMessage;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
@Test
public void requst_responseTest() throws Exception {
String requestResponse =
"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
" <soap:Body>" +
...
...
...
" </soap:Body>" +
"</soap:Envelope>";
InputStream is = new ByteArrayInputStream(requestResponse.getBytes());
SOAPMessage request = MessageFactory.newInstance().createMessage(null, is);
}
soap:Body 안에는 각자의 요청정보 및 응답정보에 맞게 변경하면된다.
아래는 SOAPMessage 에서 태그에 존재하는 값을 가져오는 방법이다.
request.getSOAPBody().getElementsByTagName("바디안에 존재하는 태그 이름")
// 바디안에 존재하는 태그 이름 중 순서에 존재하는 값 가져오기
request.getSOAPBody().getElementsByTagName("바디안에 존재하는 태그 이름").item(순서)
//key와 value값 가져오기
request.getSOAPBody().getElementsByTagName("바디안에 존재하는 태그 이름").item(순서).getAttributes().getNamedItem("아이템명")
//value만 가져오기
request.getSOAPBody().getElementsByTagName("바디안에 존재하는 태그 이름").item(순서).getAttributes().getNamedItem("아이템명").getNodeValue()
메인 이미지 출처 : 사진: Unsplash의Libby Penner