const PrivacyService_Real_Addr = "http://도메인/페이지.asmx?WSDL"
Dim objSoap, ip
Set objSoap = Server.CreateObject("MSSOAP.SoapClient30")
objSoap.ClientProperty("ServerHTTPRequest") = True
objSoap.MSSoapInit(PrivacyService_Real_Addr)
ip = Request.ServerVariables("REMOTE_ADDR")
fn_AuthCheckSoap = objSoap.AuthCheck(ip) ' 호출 메소드
'fn_AuthCheckSoap = 1
End Function
프로젝트를 진행 하다가보면 경우에 따라서 웹 서비스를 호출 하는 일이 많이 있습니다.
이번에는 ASP 에서 Web Service 호출 하는 3가지 방법에 대해서 샘플 중심으로 정리해 보겠습니다.
1. Soap 방식의 Request 샘플 (XMLHTTP)
<%
szSoapServer = "http:// test .wsc.com/TEST.asmx "
szSoapMessage = "<?xml version='1.0' encoding='utf-8'?>"
szSoapMessage = szSoapMessage & "<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/'>"
szSoapMessage = szSoapMessage & "<soap:Body>"
szSoapMessage = szSoapMessage & "<GetUserInfo xmlns='http://" & WEB_SVC_HOST & "/'>"
szSoapMessage = szSoapMessage & "<intUserSeq>" & nUserNo & "</intUserSeq>"
szSoapMessage = szSoapMessage & "</GetUserInfo >"
szSoapMessage = szSoapMessage & "</soap:Body>"
szSoapMessage = szSoapMessage & "</soap:Envelope>"
'다른 웹 서버 간에 서버의 안전한 HTTP 액세스를 위한 메서드와 속성을 제공, XML 데이터 교환 가능
Set objXmlHttp = CreateObject("MSXML2.ServerXMLHTTP")
'파라미터 1.POST / GET 메소드 2.요청을 전달할 URL 3. 비동기식(True) / 동기식(False)
objXmlHttp.open "POST", szSoapServer, False
objXmlHttp.setRequestHeader "Host" , “test .wsc.com”
'메시지 Body안에 포함된 컨텐츠의 형식을 표시, Charset ? 문자 인코딩 방식 Ex) EUC-KR 한국어, UTF-8 유니코드(8비트)
objXmlHttp.setRequestHeader "Content-Type" , "text/xml; charset=utf-8"
'헤더, 메시지 Body의 길이를 알려준다
'objXmlHttp.setRequestHeader "Content-Length", "1000"
'URI를 사용하여 원격 프로시저 호출
objXmlHttp.setRequestHeader "SOAPAction" , "http:// test .wsc.com/GetUserInfo "
objXmlHttp.send szSoapMessage
%>
|
2. Post 방식의 Request 샘플 (XMLHTTP)
<%
szServer = "http:// test .wsc.com/TEST.asmx "
'다른 웹 서버 간에 서버의 안전한 HTTP 액세스를 위한 메서드와 속성을 제공, XML 데이터 교환 가능
Set objXmlHttp = CreateObject("MSXML2.ServerXMLHTTP")
objReqParam = ""
objReqParam = objReqParam & "?pram1=" & Server.URLEncode(pram1) & ""
objReqParam = objReqParam & "&pram2=" & Server.URLEncode(pram2) & ""
objReqParam = objReqParam & "&pram3=" & Server.URLEncode(pram3) & ""
'파라미터 1.POST / GET 메소드 2.요청을 전달할 URL 3. 비동기식(True) / 동기식(False)
objXmlHttp.open "POST", szServer, False
objXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objXmlHttp.send objReqParam
%>
|
3. Get 방식의 Request 샘플 (XMLHTTP)
<%
szSoapServer = "http:// test .wsc.com/TEST.asmx?param1=param1¶m2=param2¶m3=param3 "
'다른 웹 서버 간에 서버의 안전한 HTTP 액세스를 위한 메서드와 속성을 제공, XML 데이터 교환 가능
Set objXmlHttp = CreateObject("MSXML2.ServerXMLHTTP")
'파라미터 1.POST / GET 메소드 2.요청을 전달할 URL 3. 비동기식(True) / 동기식(False)
objXmlHttp.open "GET", szSoapServer, False
objXmlHttp.send()
%>
|
4. Response Sample (XMLDOM)
<%
If objXmlHttp.status = 200 Then
'XML 문서를 읽고, 수정하고, 생성하고, 조작
Set objXmlDom = Server.CreateObject("Microsoft.XMLDOM")
'비동기식으로 동작하는 지를 설정해주는 불(Boolen) 파라미터
objXmlDom.async = False
objXmlDom.setProperty "ServerHTTPRequest", True
'responseBody ? 응답으로 받은 데이터의 Body 부분을 Unsigned Byte 형식의 배열로 나타낸다.
'responseText - 응답으로 받은 데이터의 Body 부분 string 형식으로 나타낸다.
'responseXML ? 응답으로 받은 데이터의 Body 부분을 MSXML을 이용하여Parsing 하여 나타낸다.
objXmlDom.Load objXmlHttp.ResponseBody
'TagName을 가진 태그들의 노드 객체를 찾아 배열로 반환
Set objXmlNode = objXmlDom.getElementsByTagName("GetUserInfoResult")(0)
' GetUserInfoResult TagName 하위의 태그들의 노드 객체를 찾아 배열로 반환
nUserNo = objXmlNodeUserInfo.getElementsByTagName("UserNo")(0).Text
szUserID = objXmlNodeUserInfo.getElementsByTagName("UserID")(0).Text
End If
%>
|