Make sure the server isn't returning a string with a space for the first character, this fails in version 5.3.3 and the function returns null (though seems to be ok in 5.2).
Easily sorted by trimming the response data:
<?php xmlrpc_decode( trim($response) ); ?>
xmlrpc_decode
(PHP 4 >= 4.1.0, PHP 5)
xmlrpc_decode — Decodifica XML para tipos nativos do PHP
Descrição
Aviso
Esta função é EXPERIMENTAL. O comportamento desta função, seu nome, incluindo toda documentação pode ser modificado sem aviso em futuras versões do PHP. Esta função deve ser usada por sua própria conta e risco.
Parâmetros
- xml
-
Resposta XML retornada por método XMLRPC.
- encoding
-
Codificação da entrada suportada por iconv (padrão é "iso-8859-1").
Valor Retornado
Retorna ou um array, ou um inteiro, ou uma string, ou um booleano de acordo com a resposta retornada via XMLRPC.
Exemplos
Veja exemplos em xmlrpc_encode_request().
Veja Também
- xmlrpc_encode_request() - Gera XML para uma requisição
- xmlrpc_is_fault() - Determina se um valor de array representa uma falha XMLRPC
phil dot berry at elise-international dot net
05-Sep-2011 08:09
ryon dot sherman at gmail dot com
21-Aug-2009 04:18
64 bit (i8) integers are not parsed by xmlrpc_decode().
Use a string replacement to work around this:
<?php
$xml = str_replace('i8>', 'i4>', $xml);
$decoded_xml = xmlrpc_decode($xml);
?>
david dot bachelart at polytechnique dot org
18-Jul-2004 08:18
Be careful with encodings, the xmlrpc-decode function is rather strict. For example, the following response parse returns NULL :
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>a & b</string></value>
</param>
</params>
</methodResponse>
You should use entities :
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>a & b</string></value>
</param>
</params>
</methodResponse>
If your server does not encode responses properly, you may have to process responses before parse.
hfuecks at pinkgoblin dot com
16-Aug-2002 03:57
Use this with an XML-RPC client to decode a server response into native PHP variables. It will automatically translate the response XML-RPC data types into their PHP equivalents.
This function will return only false is there is any problem with format of the XML it receives.
The HTTP response header will need to be stripped off with something like;
<?php
$xml=(substr($response, strpos($response, "\r\n\r\n")+4));
$phpvars = xmlrpc_decode ($xml);
?>
