Easy way to encode XMLRPC calls
installing using composer:
composer.json
:
"require": {
"antanasga/xmlrpcencode": "^0.1.2"
}
In terminal:
$ composer require antanasga/xmlrpcencode
- The only parced object is
DateTime
- When specific type is required use
([type name])
- Example:
(float) 1
, returns<double>1.000000</double>
. Keep in mindfloat
fits XMLRPC spec asdouble
- Example:
Request:
$e = new Encode(
[
'hello-world',
[
"int" => 1,
"double" => 1.1,
"bool" => true,
"string" => "one",
"datetime" => new DateTime(),
"array" => [1, "one", false]
],
Encode::base64('Hello world') // PHP has no base64 object so we call it like that
],
'execute'
);
echo $e;
Output:
<?xml version='1.0'?>
<methodCall>
<methodName>execute</methodName>
<params>
<param>
<value>
<string>hello-world</string>
</value>
</param>
<param>
<value>
<struct>
<member>
<name>int</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>double</name>
<value>
<double>1.100000</double>
</value>
</member>
<member>
<name>bool</name>
<value>
<boolean>1</boolean>
</value>
</member>
<member>
<name>string</name>
<value>
<string>one</string>
</value>
</member>
<member>
<name>datetime</name>
<value>
<dateTime.iso8601>2021-06-25T06:39:12+0000</dateTime.iso8601>
</value>
</member>
<member>
<name>array</name>
<value>
<array>
<data>
<value>
<int>1</int>
</value>
<value>
<string>one</string>
</value>
<value>
<boolean>0</boolean>
</value>
</data>
</array>
</value>
</member>
</struct>
</value>
</param>
<param>
<value>
<base64>SGVsbG8gd29ybGQ=</base64>
</value>
</param>
</params>
</methodCall>
Request:
$e = new Encode(
[
'hello-world',
[
"int" => 1,
"double" => 1.1,
"bool" => true,
"string" => "one",
"datetime" => new DateTime(),
"array" => [1, "one", false]
],
Encode::base64('Hello world')
],
);
echo $e;
Output:
<?xml version='1.0'?>
<methodResponse>
<params>
<param>
<value>
<string>hello-world</string>
</value>
</param>
<param>
<value>
<struct>
<member>
<name>int</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>double</name>
<value>
<double>1.100000</double>
</value>
</member>
<member>
<name>bool</name>
<value>
<boolean>1</boolean>
</value>
</member>
<member>
<name>string</name>
<value>
<string>one</string>
</value>
</member>
<member>
<name>datetime</name>
<value>
<dateTime.iso8601>2021-06-25T06:45:04+0000</dateTime.iso8601>
</value>
</member>
<member>
<name>array</name>
<value>
<array>
<data>
<value>
<int>1</int>
</value>
<value>
<string>one</string>
</value>
<value>
<boolean>0</boolean>
</value>
</data>
</array>
</value>
</member>
</struct>
</value>
</param>
<param>
<value>
<base64>SGVsbG8gd29ybGQ=</base64>
</value>
</param>
</params>
</methodResponse>
Request:
$f = Encode::encodeFault('Does not exist', 'no backtrace');
echo $f;
Output:
<?xml version='1.0'?>
<methodResponse>
<value>
<struct>
<member>
<name>faultCode</name>
<value>
<string>Does not exist</string>
</value>
</member>
<member>
<name>faultString</name>
<value>
<string>no backtrace</string>
</value>
</member>
</struct>
</value>
</methodResponse>