Ich versuche grad mal etwas mit XMLRPC auf die Beine zu stellen. Nun habe ich eine kleine Testanwendung (Client) geschrieben, welche so aussieht:
Nicht wirklich schön, aber für den Anfang erfüllt es seinen Zweck.
Nun habe ich das Problem, dass ich einen Response bekomme, der wie folgt aussieht:
Nun würde ich gern per xmlrpc_decode() diesen Response in einen PHP-Array umwandeln. Es funktioniert manchmal aber meistens nicht.
In diesem Response sieht man zwei Werte: "1e0" und "0". Ich habe leider keine Ahnung, wo diese Werte herkommen. Wenn ich $response nicht ausgeben lasse sind diese Werte auch nicht da. Nun habe ich auf den Header geachtet und mir ist aufgefallen, dass diese Werte nur dann kommen, wenn der Header wie folgt aussieht:
Aber nicht, wenn der Header so aussieht:
Unterschiede sind rot gekennzeichnet.
Woran liegt das?
Code:
<?php
header('Content-Type: text/plain');
$response = '';
$request = xmlrpc_encode_request(
'public.listEntries', array('id', 'cid')
);
$fo = @fsockopen('localhost', 80, $errno, $errstr, 30);
if ($fo) {
$data = "POST /Testlabor/xmlrpc_server.php HTTP/1.1\r\n"
. "Host: localhost\r\n"
. "Content-Length: " . strlen($request) . "\r\n"
. "Connection: close\r\n\r\n"
. $request;
fwrite($fo, $data);
while(!feof($fo)) {
$response .= fgets($fo, 128);
}
fclose($fo);
$response = (substr($response, strpos($response, "\r\n\r\n")+4));
var_dump(xmlrpc_decode($response));
// echo $response;
}
else {
echo 'Error: Could not connect to server.';
}
?>
Nun habe ich das Problem, dass ich einen Response bekomme, der wie folgt aussieht:
Code:
HTTP/1.1 200 OK
Date: Thu, 13 Jul 2006 17:56:15 GMT
Server: Apache/2.0.58 (Win32) SVN/1.3.1 DAV/2
X-Powered-By: PHP/5.1.2
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-15
1e0
<?xml version="1.0" encoding="iso-8859-15"?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>id</name>
<value>
<string>1</string>
</value>
</member>
<member>
<name>cid</name>
<value>
<string>1</string>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
0
In diesem Response sieht man zwei Werte: "1e0" und "0". Ich habe leider keine Ahnung, wo diese Werte herkommen. Wenn ich $response nicht ausgeben lasse sind diese Werte auch nicht da. Nun habe ich auf den Header geachtet und mir ist aufgefallen, dass diese Werte nur dann kommen, wenn der Header wie folgt aussieht:
HTTP/1.1 200 OK
Date: Thu, 13 Jul 2006 17:56:15 GMT
Server: Apache/2.0.58 (Win32) SVN/1.3.1 DAV/2
X-Powered-By: PHP/5.1.2
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-15
Date: Thu, 13 Jul 2006 17:56:15 GMT
Server: Apache/2.0.58 (Win32) SVN/1.3.1 DAV/2
X-Powered-By: PHP/5.1.2
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-15
HTTP/1.1 200 OK
Date: Thu, 13 Jul 2006 18:00:05 GMT
Server: Apache/2.0.58 (Win32) SVN/1.3.1 DAV/2
X-Powered-By: PHP/5.1.2
Content-Length: 480
Connection: close
Content-Type: text/html; charset=iso-8859-15
Date: Thu, 13 Jul 2006 18:00:05 GMT
Server: Apache/2.0.58 (Win32) SVN/1.3.1 DAV/2
X-Powered-By: PHP/5.1.2
Content-Length: 480
Connection: close
Content-Type: text/html; charset=iso-8859-15
Woran liegt das?

Kommentar