June 2018 by Dave Winer

XML-RPC-in-JSON examples

The new JavaScript toolkit for XML-RPC supports a JSON syntax.

Below are five examples first showing the standard XML-RPC syntax followed by the experimental JavaScript syntax.

Single param

<methodCall>
    <methodName>examples.getStateName</methodName>
    <params>
        <param>
            <value><int>50</int></value>
            </param>
        </params>
    </methodCall>
{
    "methodCall": {
        "methodName": "examples.getStateName",
        "params": [
            23
            ]
        }
    }

Param is an array

<methodCall>
    <methodName>examples.getStateList</methodName>
    <params>
        <param>
            <value>
                <array>
                    <data>
                        <value><int>12</int></value>
                        <value><int>44</int></value>
                        <value><int>4</int></value>
                        <value><int>1</int></value>
                        </data>
                    </array>
                </value>
            </param>
        </params>
    </methodCall>
{
    "methodCall": {
        "methodName": "examples.getStateList",
        "params": [
            [
                12,
                44,
                4
                ]
            ]
        }
    }

Param is a struct

<methodCall>
    <methodName>examples.getStateStruct</methodName>
    <params>
        <param>
            <value>
                <struct>
                    <member>
                        <name>state1</name>
                        <value>
                            <int>12</int>
                            </value>
                        </member>
                    <member>
                        <name>state2</name>
                        <value>
                            <int>8</int>
                            </value>
                        </member>
                    </struct>
                </value>
            </param>
        </params>
    </methodCall>
{
    "methodCall": {
        "methodName": "examples.getStateStruct",
        "params": [
            {
                "state1": 12,
                "state2": 8
                }
            ]
        }
    }

Normal, non-error response

<methodResponse>
    <params>
        <param>
            <value>
                <string>South Carolina</string>
                </value>
            </param>
        </params>
    </methodResponse>
{
    "methodResponse": {
        "value": "South Carolina"
        }
    }

Error response

<methodResponse>
    <fault>
        <value>
            <struct>
                <member>
                    <name>faultCode</name>
                    <value><i4>1</i4></value>
                    </member>
                <member>
                    <name>faultString</name>
                    <value><string>Can't delete the file because it doesn't exist.</string></value>
                    </member>
                </struct>
            </value>
        </fault>
    </methodResponse>
{
    "methodResponse": {
        "fault": {
            "faultCode": 1,
            "faultString": "Can't delete the file because it doesn't exist."
            }
        }
    }