Ben bezig geweest met een xmlrpc servertje in elkaar aan het zetten. Op zich nie zo heel spannend...het request maken, posten, opvragen, uitlezen en verwerken lukt al prima. Nu de response nog. Met de functie xmlrpc_decode (http://www.php.net/xmlrpcdecode) zou een array omgezet moeten kunnen worden naar een xmlrpc response. Dit werkt alleen krijg je dan een response die er als volgt uit ziet:

<?xml version='1.0' encoding="utf-8" ?>
<params>
<param>
<value>
<struct>
<member>
<name>one</name>
<value>
<string>red</string>
</value>
</member>
<member>
<name>two</name>
<value>
<string>blue</string>
</value>
</member>
<member>
<name>three</name>
<value>
<string>green</string>
</value>
</member>
</struct>
</value>
</param>
</params>

Ziet er logisch uit maar volgens de xmlrpc handleiding zouden er response tags omheen moeten zitten en er dus zo uit moeten zien:

<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>

Lees ik de response daarna uit met simplexml, mis ik een paar tags. Zou dit kunnen liggen aan het feit dat de xmlrpc functies van php nog experimenteel zijn? Of doe ik iets verkeerd? Heeft iemand trouwens enig idee wanneer deze functies wel worden vrijgegeven??

Ben benieuwd naar eventuele reacties van mede xmlrpc-ers...

<edit>chips..verkeerde forum...</edit>
vespino schreef op 23.04.2007 22:31
<edit>chips..verkeerde forum...</edit>

Waar wil je hem hebben, dan verplaats ik hem wel even.
Geen id waar deze het best past...PHP of OOP...tja...kies jij maar ;)
vespino schreef op 23.04.2007 22:41
Geen id waar deze het best past...PHP of OOP...tja...kies jij maar ;)

Ja, ik heb ook geen idee........;-))
Tjah, je begint je post met:
"Ben bezig geweest met een xmlrpc servertje in elkaar aan het zetten. Op zich nie zo heel spannend...het request maken, posten, opvragen, uitlezen en verwerken lukt al prima. Nu de response nog. Met de functie xmlrpc_decode"

Ik zou hem niet bij OOP zetten, maar bij PHP. -> de functie xmlrpc_decode is een PHP functie, en dat is waar de vraag om draait.
Robert_Deiman schreef op 23.04.2007 22:53
Ik zou hem niet bij OOP zetten, maar bij PHP. -> de functie xmlrpc_decode is een PHP functie, en dat is waar de vraag om draait.

Okee, helder, en is verplaatst.
'K heb weleens een XML-RPC client gebouwd die communiceerde met een service van een of andere vakantiehuisjes-aanbieder, een stukje testcode dat gebruik maakt van cURL icm de XMLRPC-functies van PHP:

<?php
error_reporting( E_ALL );

echo '<pre>';

// Create request
$sRequest = xmlrpc_encode_request( 'search.Houses',
array
(
'WebpartnerCode' => 'yyy',
'WebpartnerPassword' => 'zzz',
'SelectionCountry' => 'NL',
'FieldList' => 'Code,Name,FromNumberPersons,NumberStars,City,Region,Country,HolidayPark,IntroductionNL'
)
);

// Initiate CURL-session
$sURL = 'https://www.eurorelais.net/cgi/eris/extern/xmlrpc/xmlrpc.htm';;
$aHeader[] = 'Content-type: text/xml';
$rCurl = curl_init();
curl_setopt( $rCurl, CURLOPT_URL, $sURL );
curl_setopt( $rCurl, CURLOPT_HTTPHEADER, $aHeader );
curl_setopt( $rCurl, CURLOPT_POST, 1 );
curl_setopt( $rCurl, CURLOPT_POSTFIELDS, $sRequest );
curl_setopt( $rCurl, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $rCurl, CURLOPT_SSL_VERIFYPEER, false );

// Execute request
if( !$sData = curl_exec( $rCurl ) )
{
// An error occurred
var_dump( curl_error( $rCurl ) );
}
else
{
// Catch data and construct xmlrpc-response
$aResponse = xmlrpc_decode( $sData );
print_r( $aResponse );
}

// Close connection-resource
curl_close( $rCurl );

echo '</pre>';
?>

Misschien heb je wat meer code beschikbaar? Ik heb zelf namelijk nog geen XMLRPC-server ingericht. Waarom trouwens XMLRPC en geen SOAP? :)

Reageren