Files
html-examples/Writerside/topics/XML-Rpc.md
2024-06-21 14:14:35 +09:00

2.1 KiB

XML-RPC

XML-RPC는 HTTP POST를 통해서 XML 메시지를 주고 받습니다.

요청

POST /xml-rpc HTTP/1.0
Host: example.com
Content-Type: text/xml

<?xml version="1.0">
<methodCall>
    <methodName>doSomething</methodName>
    <params>
        <param>
            <value><integer>100</integer></value>
        </param>
    </params>
</methodCall>

응답

서버 오류 등이 아닌 경우에는 200OK를 응답해야 합니다.

HTTP/1.1 200 OK
Content-Type: text/xml

<?xml version="1.0">
<methodResponse>
    <params>
        <param><string>Hello</string></param>
    </params>
</methodResponse>

오류 응답

HTTP/1.1 200 OK
Content-Type: text/xml

<?xml version="1.0">
<methodResponse>
    <fault>
        <value>
            <struct>
                <member>
                    <name>faultCode</name>
                    <value><int>4</int></value>
                </member>
                <member>
                    <name>faultString</name>
                    <value><string>Too many parameters.</string></value>
                </member>
            </struct>
        </value>
    </fault>
</methodResponse>

자료형

자료형이 생략된 경우에는 string으로 간주합니다.

  • array

    <array>
        <data>
            <value><int>100</int></value>
            <value><int>101</int></value>
            <value><int>102</int></value>
        </data>
    </array>
    
  • base64

    <base64>aW9...cyE=</base64>
    
  • boolean

    <boolean>1</boolean>
    
  • dateTime.iso8601

    <dateTime.iso8601>2021-01-01T00:12:00</dateTime.iso8601>
    
  • double

    <double>100.0</double>
    
  • integer

    <int>100</int>
    <i4>100</i4>
    
  • string

    <string>Hello</string>
    
  • struct

    <struct>
        <member>
            <name>foo</name>
            <value><int>100</int></value>
        </member>
        <member>
            <name>bar</name>
            <value><string>Hello</string></value>
        </member>
    </struct>
    
  • nil

    <nil />
    

http://xmlrpc.com/