Einzelnen Beitrag anzeigen
  #1  
Alt 22.11.2009, 15:10:23
bibabu bibabu ist offline
Anfänger
 
Registriert seit: Nov 2009
Alter: 34
Beiträge: 2
xmlrpc - rückgabe von array und objekten

Guten Tag!

Ich hänge schon länger an einem Problem mit php5-xmlrpc. Mein Client sendet eine Anfragen an meinen Server und fordert die methode getLog und übergibt keinen Parameter. Mein Server verbindet sich nun zu einem Mumbleserver (eine VoIP Anwendung, ähnlich TeamSpeak) und fragt von diesem das Logfile ab. Der Mumbleserver gibt eine kombination aus Arrays und Objekten zurück. Diese Rückgabe möchte ich auch über meine XMLRPC Schnittstelle weiterleiten.

Typische xmlrpc antwort:

Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<methodResponse>
<params>
 <param>
  <value>
   <struct>
    <member>
     <name>method</name>
     <value>
      <string>getTree</string>

     </value>
    </member>
    <member>
     <name>message</name>
     <value>
      <string>success</string>
     </value>
    </member>

    <member>
     <name>tree</name>
     <value>
      <array>
       <data>
        <value>
         <struct>
          <member>

           <name>timestamp</name>
           <value>
            <int>1258894194</int>
           </value>
          </member>
          <member>
           <name>txt</name>

           <value>
            <string>Registration: Registration updated</string>
           </value>
          </member>
         </struct>
        </value>
        <value>
         <struct>

          <member>
           <name>timestamp</name>
           <value>
            <int>1258894194</int>
           </value>
          </member>
          <member>
           <name>txt</name>

           <value>
            <string><704:(-1)> Connection closed: The remote host closed the connection</string>
           </value>
          </member>
         </struct>
        </value>
        <value>

         <struct>
          <member>
           <name>timestamp</name>
           <value>
            <int>1258894193</int>
           </value>
          </member>
          <member>

           <name>txt</name>
           <value>
            <string><704:(-1)> New connection: 128.39.114.1:53268</string>
           </value>
          </member>
         </struct>
        </value>

        <value>
         <struct>
          <member>
           <name>timestamp</name>
           <value>
            <int>1258892277</int>
           </value>
          </member>

          <member>
           <name>txt</name>
           <value>
            <string><702:cell(-1)> Connection closed: The remote host closed the connection</string>
           </value>
          </member>
         </struct>

        </value>
       </data>
      </array>
     </value>
    </member>
   </struct>
  </value>
 </param>
</params>

</methodResponse>
Typische rückgabe des Mumbleservers

Code:
Array
(
    [0] => Murmur_LogEntry Object
        (
            [timestamp] => 1258894194
            [txt] => Registration: Registration updated
        )

    [1] => Murmur_LogEntry Object
        (
            [timestamp] => 1258894194
            [txt] => <704:(-1)> Connection closed: The remote host closed the connection
        )

    [2] => Murmur_LogEntry Object
        (
            [timestamp] => 1258894193
            [txt] => <704:(-1)> New connection: 128.39.114.1:53268
        )

    [3] => Murmur_LogEntry Object
        (
            [timestamp] => 1258892277
            [txt] => <702:cell(-1)> Connection closed: The remote host closed the connection
        )

)
Lasse ich diese Antwort nun von xmlrpc_decode dekodieren erhalte ich ein leeres array bzw. nichts. Also der Aufruf meldet mir überhaupt nichts zurück. Über Hinweiße wie ich dieses Problem lösen kann würde ich mich sehr freuen.

Realisiert habe ich das ganze mit: http://de.php.net/manual/de/book.xmlrpc.php. Externe Klassen habe ich nicht verwendet.

gruß Daniel
Mit Zitat antworten