Search results for 'xmlrpc'

XML-RPC Fault 문서 포맷

XML-RPC request 처리 도중 발생하는 오류에 대한 Response 문서 형식은
하나의 값을 갖는 fault 엘리먼트로 기술한다.

[code]
<?xml version="1.0"?>
<methodResponse>
   <fault>
      <value><string>No such method!</string></value>
   </fault>
</methodResponse>
[/code]

실제로 처리 실패에는 error code가 부여된 경우가 일반적이므로 아래와 같이 struct로 에러 코드와
에러 문구를 함께 전송할 수도 있다.
[code]
<?xml version="1.0"?>
<methodResponse>
   <fault>
      <value>
         <struct>
            <member>
               <name>code</name>
               <value><int>26</int></value>
            </member>
            <member>
               <name>message</name>
               <value><string>No such method!</string></value>
            </member>
         </struct>
      </value>
   </fault>
</methodResponse>
[/code]
2010/04/26 12:09 2010/04/26 12:09
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

XML-RPC 데이타 형식과 표기 방법

XML-RPC의 데이터 타입
 Type  Value  Examples
int or i4 32-bit integers between - 2,147,483,648 and 2,147,483,647. <int>27<int>
<i4>27<i4>
double 64-bit floating-point numbers <double>27.31415</double>
<double>-1.1465</double>
Boolean true (1) or false (0) <boolean>1</boolean>
<boolean>0</boolean>
string ASCII text, though many implementations support Unicode <string>Hello</string>
<string>bonkers! @</string>
dateTime.iso8601 Dates in ISO8601 format: CCYYMMDDTHH:MM:SS <dateTime.iso8601>
20021125T02:20:04
</dateTime.iso8601>
<dateTime.iso8601>
20020104T17:27:30
</dateTime.iso8601>
base64 Binary information encoded as Base 64, as defined in RFC 2045 <base64>
SGVsbG8sIFdvcmxkIQ==
</base64>


배열 데이타는 data 엘리먼트를 포함하는 array 엘리먼트로 기술한다.
[code]
<value>
   <array>
      <data>
         <value><string>This </string></value>
         <value><string>is </string></value>
         <value><string>an </string></value>
         <value><string>array.</string></value>
      </data>
   </array>
</value>
[/code]

아래는 4개의 integer 값을 갖는 배열을 표현한다.
[code]
<value>
   <array>
      <data>
         <value><int>7</int></value>
         <value><int>1247</int></value>
         <value><int>-91</int></value>
         <value><int>42</int></value>
      </data>
   </array>
</value>
[/code]

Array 구조는 서로 다른 데이터 타입을 포함하는것을 허용한다.
[code]
<value>
   <array>
      <data>
         <value><boolean>1</boolean></value>
         <value><string>Chaotic collection, eh?</string></value>
         <value><int>-91</int></value>
         <value><double>42.14159265</double></value>
   </data>
   </array>
</value>
[/code]

다차원 배열의 경우 간단히 Array 를 중첩하여 표기한다.
[code]
<value>
   <array>
      <data>
         <value>
            <array>
               <data>
                  <value><int>10</int></value>
                  <value><int>20</int></value>
                  <value><int>30</int></value>
               </data>
            </array>
         </value>
         <value>
            <array>
               <data>
                  <value><int>15</int></value>
                  <value><int>25</int></value>
                  <value><int>35</int></value>
               </data>
            </array>
         </value>
      </data>
   </array>
</value>
[/code]
2010/04/26 11:59 2010/04/26 11:59
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

XML-RPC Response 문서 포맷

[code]
<?xml version="1.0"?>
<methodResponse>
   <params>
      <param>
         <value><double>18.24668429131</double></value>
      </param>
   </params>
</methodResponse>
[/code]
XML-RPC response는 단 하나 parameter만을 갖는다.
파라미터는 하나 이상의 값을 리턴하기 위해 struct 나 array 형식일 수 있다.
파라미터는 필수항목으로 비록 처리하는 쪽 메소드의 리턴 값이 없을지라도
'정상처리'를 표시하기 위해 boolean의 true (1)을 파라미터로 표현해야 한다.


[code]
HTTP/1.1 200 OK
Date: Sat, 06 Oct 2001 23:20:04 GMT
Server: Apache.1.3.12 (Unix)
Connection: close
Content-Type: text/xml
Content-Length: 124
[/code]
XML-RPC의 경우 HTTP1.0 스펙을 지원하지만 HTTP1.1과도 호환이 된다.
Content-type의 경우 'text/xml' 형식만 허용한다.
response의 길이를 bytes 단위로 Content-Length 에 표기한다.


[code]
HTTP/1.1 200 OK
Date: Sat, 06 Oct 2001 23:20:04 GMT
Server: Apache.1.3.12 (Unix)
Connection: close
Content-Type: text/xml
Content-Length: 124

<?xml version="1.0"?>
<methodResponse>
   <params>
      <param>
         <value><double>18.24668429131</double></value>
      </param>
   </params>
</methodResponse>
[/code]
결과적으로 위와 같은 형태의 문서가 XML-RPC 서버로부터 XML-RPC 클라이언트로 전송되고 connection을
끊는다.

2010/04/26 11:36 2010/04/26 11:36
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다