1. 소갯말
일단 버그 있을지도 모릅니다... ㅠㅠ

일단 XMLRPC부터 소개하자면
http://xmlrpc.com/
http://wiki.kldp.org/HOWTO//html/XML-RPC-HOWTO/xmlrpc-howto-intro.html

간단하게 MS의 SOAP과 유사하게,
'XML-RPC는 HTTP를 통한 간단하고 이식성 높은 원격 프로시져 호출 방법이다' 이라고 하네요
(제가 설명을 잘 못해서...)

일단 압축을 여시면 파일을 3가지가 있는데
class_xmlrpc.asp 이하 2가지 파일 (class_hashtable.asp / class_gto.asp) 은
의존성때문에 같이 넣어주어야 할껍니다 -.-;


2. 레퍼런스

- 생성자

   * Constructor void xmlRPC() - XMLRPC Class를 생성합니다.

- Properties

   * Public String method - XMLRPC 서버측 method를 지정해줍니다.

   * Public Mixed data - XMLRPC 서버에 보내줄 데이터를 지정하여 줍니다. 지정하는 순간 XMLRPC 문법에 맞
게 XML문서로 변환됩니다.

   * Public Boolean responseStatus - 데이터를 보낸 이후, 응답 상태를 나타냅니다. 문제가 있으면 false값

   * Public Array responseData - 데이터를 받고, ASP 데이터형태로 변환합니다.

- Methods

   * Public void send(url) - XMLRPC 서버쪽으로 데이터를 송신합니다.

   = Arguments

      * String url - 데이터를 송신할 XMLRPC 서버의 주소를 지정합니다.


3. 예제

 아래 예제는... 필자가 구축한 XMLRPC 서버에 데이터를 전송하여, 데이터를 읽어오는 예제입니다.
 video.ucc Method로 Argument로 받은 http://www.youtube.com/watch?v=eSnzCpdKXJ8
 아래 주소의 UCC 동영상에 대한 정보를 가져오는 부분입니다.

* 전달받은 원시 XMLRPC Response Data

<methodResponse>
   <params>
      <param>
         <value>
            <struct>
               <member>
                  <name>subject</name>
                  <value>
                     <string>Solitudes: Natural Relaxation - horizons</string>
                  </value>
               </member>
               <member>
                  <name>contents</name>
                  <value>
                     <string>Solitudes: Natural Relaxation - horizons ...</string>
                  </value>
               </member>
               <member>
                  <name>tag</name>
                  <value>
                     <string>Solitudes Natural Relaxation horizons</string>
                  </value>
               </member>
               <member>
                  <name>flash</name>
                  <value>
                     <string>http://www.youtube.com/v/eSnzCpdKXJ8&f=videos&app=youtube_gdata</string>
                  </value>
               </member>
               <member>
                  <name>thumb</name>
                  <value>
                     <string>http://i.ytimg.com/vi/eSnzCpdKXJ8/2.jpg</string>
                  </value>
               </member>
               <member>
                  <name>url</name>
                  <value>
                     <string>http://www.youtube.com/watch?v=eSnzCpdKXJ8</string>
                  </value>
               </member>
               <member>
                  <name>publisher</name>
                  <value>
                     <string>http://youtube.com</string>
                  </value>
               </member>
               <member>
                  <name>category</name>
                  <value>
                     <string>Music</string>
                  </value>
               </member>
            </struct>
         </value>
      </param>
   </params>
</methodResponse>

* 코드

<!-- #include virtual="/include/class_hashtable.asp" -->
<!-- #include virtual="/include/class_gto.asp" -->
<!-- #include virtual="/include/class_xmlrpc.asp" -->
<%
   Dim objRPC
   Set objRPC = New xmlRPC
   objRPC.method = "video.ucc"

   '// 전달할 데이터입니다. 어느 데이터형이라도 가능합니다.
   '// Object일 경우는 Scripting.Dictionary 또는 제가 만든 Hashtable (내부적으로는
Scripting.Dictionary ㅠㅠ) 만 가능합니다.
   objRPC.data = "http://www.youtube.com/watch?v=eSnzCpdKXJ8"
   objRPC.send("http://*******/api/")   '// 보안상 ^^;

   If objRPC.responseStatus = True Then
      '// XMLRPC Response를 받습니다. 보통 수신받는 변수는 한개일 경우가 대부분입니다.
      Dim objData : objRPC.responseData(0)

      '// 첫번째로 수신받은 데이터는 struct형으로 Hashtable로 변환되지만...
      '// Vbscript 문법상 문제때문에... 내부적으로 원소를 하나가진 배열로밖에 표현이 안됩니다.
      '// 이해해주세요 ㅠㅠ
      Dim curData : Set curData = objData(0)
   End If

   Set objRPC = Nothing

   Dim curKey
   For Each curKey In curData.Keys
      Response.Write curKey & " - " & curData.Item(curKey) & "<br />"
   Next
%>

* 결과

subject - Solitudes: Natural Relaxation - horizons
contents - Solitudes: Natural Relaxation - horizons ...
tag - Solitudes Natural Relaxation horizons
flash - http://www.youtube.com/v/eSnzCpdKXJ8&f=videos&app=youtube_gdata
thumb - http://i.ytimg.com/vi/eSnzCpdKXJ8/2.jpg
url - http://www.youtube.com/watch?v=eSnzCpdKXJ8
publisher - http://youtube.com
category - Music


4. 알려진 버그

VBScript의 문법의 문제상, 바로 변수에 Object (Hashtable 또는 Scripting.Dictionary) 데이터형을
정의하지 못해서 편법으로 0번째 원소를 가진 배열 만드는 방식으로 처리했습니다.

제가 설명을 잘 못해서... 이해하지 못하신 분들은
class_gto.asp 파일을 열어보시길 권합니다 -.-;
2009/04/27 19:30 2009/04/27 19:30

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다