[re-request] PEAR::SOAP Syntax
| From: | Sönke Ruempler | Date: | Tue, 25 May 2004 05:53:02 +0000 |
| Subject: | [re-request] PEAR::SOAP Syntax | ||
| Groups: | php.pear.general | ||
| Request: | Send a blank email to pear-general+get-12716@lists.php.net to get a copy of this message | ||
Hi,
in some cases i get XML parse errors when getting strings from SOAP_Server.
I am confused. Tested with 0.7.5 and 0.8RC3.
Do i have to encode the strings with e. g. htmlentities by myself? I think
the SOAP Module should handle this. I tested that with a dispatch map, too -
without any changes :-(
PS: Is there any doc?
-------
Here the example client output:
object(soap_fault)(8) {
["error_message_prefix"]=>
string(0) ""
["mode"]=>
int(1)
["level"]=>
int(1024)
["code"]=>
string(6) "Parser"
["message"]=>
string(69) "XML error on line 16 col 238 byte 827 not well-formed (invalid
token)"
["userinfo"]=>
string(1923) "<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns4="urn:immo"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns4:random_immoResponse>
<return>
<standort xsi:type="xsd:string">Drochtersen / Barnkrug</standort>
<id xsi:type="xsd:string">78914222</id>
<bildtyp1 xsi:type="xsd:string">1</bildtyp1>
<text xsi:type="xsd:string"><b><center>Einfamilienhaus
in
Drochtersen
(renorviert)</center></b><BR><BR><blockquote>&
lt;li><b>Aufteilung:</b><BR>EG: Wohnzimmer,
Schlafzimmer, Küche, Bad, Gäste-WC<BR>OG: Schlafzimmer, Kinderzimmer,
Gästezimmer,
Duschbad<BR><BR><b><li>Ausstattung:</b>
Teilkeller, Ölzentralheizung (Bj. 95), Iso-Fenster, Rolläden Teppich- u.
Fliesenböden!<BR><BR>Grundstück: ca. 1847 qm mit Schuppen,
großer Garten
(Bauplatz)<BR><BR><b><li>Umfeld:</b>
Drochtersen OT Barnkrug, Schule, Kindergarten, Ärzte und
Einkaufsmöglichkeiten in der Nähe.<BR><BR><i>Alle
Angaben
ohne
Gewähr</i></blockquote><BR></text></return></ns4:random_im
moResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>"
["backtrace"]=>
array(6) {
[0]=>
array(6) {
["file"]=>
string(27) "/usr/lib/php/SOAP/Fault.php"
["line"]=>
int(49)
["function"]=>
string(10) "pear_error"
["class"]=>
string(10) "pear_error"
["type"]=>
string(2) "::"
["args"]=>
array(5) {
[0]=>
string(69) "XML error on line 16 col 238 byte 827 not well-formed
(invalid token)"
[1]=>
string(6) "Parser"
[2]=>
NULL
[3]=>
NULL
[4]=>
string(1923) "<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns4="urn:immo"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns4:random_immoResponse>
<return>
<standort xsi:type="xsd:string">Drochtersen / Barnkrug</standort>
<id xsi:type="xsd:string">78914222</id>
<bildtyp1 xsi:type="xsd:string">1</bildtyp1>
<text xsi:type="xsd:string"><b><center>Einfamilienhaus
in
Drochtersen
(renorviert)</center></b><BR><BR><blockquote>&
lt;li><b>Aufteilung:</b><BR>EG: Wohnzimmer,
Schlafzimmer, Küche, Bad, Gäste-WC<BR>OG: Schlafzimmer, Kinderzimmer,
Gästezimmer,
Duschbad<BR><BR><b><li>Ausstattung:</b>
Teilkeller, Ölzentralheizung (Bj. 95), Iso-Fenster, Rolläden Teppich- u.
Fliesenböden!<BR><BR>Grundstück: ca. 1847 qm mit Schuppen,
großer Garten
(Bauplatz)<BR><BR><b><li>Umfeld:</b>
Drochtersen OT Barnkrug, Schule, Kindergarten, Ärzte und
Einkaufsmöglichkeiten in der Nähe.<BR><BR><i>Alle
Angaben
ohne
Gewähr</i></blockquote><BR></text></return></ns4:random_im
moResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>"
}
}
[1]=>
array(6) {
["file"]=>
string(26) "/usr/lib/php/SOAP/Base.php"
["line"]=>
int(199)
["function"]=>
string(10) "soap_fault"
["class"]=>
string(10) "soap_fault"
["type"]=>
string(2) "->"
["args"]=>
array(6) {
[0]=>
string(69) "XML error on line 16 col 238 byte 827 not well-formed
(invalid token)"
[1]=>
string(6) "Parser"
[2]=>
string(0) ""
[3]=>
string(1923) "<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns4="urn:immo"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns4:random_immoResponse>
<return>
<standort xsi:type="xsd:string">Drochtersen / Barnkrug</standort>
<id xsi:type="xsd:string">78914222</id>
<bildtyp1 xsi:type="xsd:string">1</bildtyp1>
<text xsi:type="xsd:string"><b><center>Einfamilienhaus
in
Drochtersen
(renorviert)</center></b><BR><BR><blockquote>&
lt;li><b>Aufteilung:</b><BR>EG: Wohnzimmer,
Schlafzimmer, Küche, Bad, Gäste-WC<BR>OG: Schlafzimmer, Kinderzimmer,
Gästezimmer,
Duschbad<BR><BR><b><li>Ausstattung:</b>
Teilkeller, Ölzentralheizung (Bj. 95), Iso-Fenster, Rolläden Teppich- u.
Fliesenböden!<BR><BR>Grundstück: ca. 1847 qm mit Schuppen,
großer Garten
(Bauplatz)<BR><BR><b><li>Umfeld:</b>
Drochtersen OT Barnkrug, Schule, Kindergarten, Ärzte und
Einkaufsmöglichkeiten in der Nähe.<BR><BR><i>Alle
Angaben
ohne
Gewähr</i></blockquote><BR></text></return></ns4:random_im
moResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>"
[4]=>
NULL
[5]=>
NULL
}
}
[2]=>
array(6) {
["file"]=>
string(28) "/usr/lib/php/SOAP/Parser.php"
["line"]=>
int(103)
["function"]=>
string(15) "_raisesoapfault"
["class"]=>
string(11) "soap_parser"
["type"]=>
string(2) "->"
["args"]=>
array(2) {
[0]=>
string(69) "XML error on line 16 col 238 byte 827 not well-formed
(invalid token)"
[1]=>
string(1923) "<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns4="urn:immo"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns4:random_immoResponse>
<return>
<standort xsi:type="xsd:string">Drochtersen / Barnkrug</standort>
<id xsi:type="xsd:string">78914222</id>
<bildtyp1 xsi:type="xsd:string">1</bildtyp1>
<text xsi:type="xsd:string"><b><center>Einfamilienhaus
in
Drochtersen
(renorviert)</center></b><BR><BR><blockquote>&
lt;li><b>Aufteilung:</b><BR>EG: Wohnzimmer,
Schlafzimmer, Küche, Bad, Gäste-WC<BR>OG: Schlafzimmer, Kinderzimmer,
Gästezimmer,
Duschbad<BR><BR><b><li>Ausstattung:</b>
Teilkeller, Ölzentralheizung (Bj. 95), Iso-Fenster, Rolläden Teppich- u.
Fliesenböden!<BR><BR>Grundstück: ca. 1847 qm mit Schuppen,
großer Garten
(Bauplatz)<BR><BR><b><li>Umfeld:</b>
Drochtersen OT Barnkrug, Schule, Kindergarten, Ärzte und
Einkaufsmöglichkeiten in der Nähe.<BR><BR><i>Alle
Angaben
ohne
Gewähr</i></blockquote><BR></text></return></ns4:random_im
moResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>"
}
}
[3]=>
array(6) {
["file"]=>
string(28) "/usr/lib/php/SOAP/Client.php"
["line"]=>
int(537)
["function"]=>
string(11) "soap_parser"
["class"]=>
string(11) "soap_parser"
["type"]=>
string(2) "->"
["args"]=>
array(3) {
[0]=>
&string(1461) "
Drochtersen / Barnkrug
78914222
1
<b><center>Einfamilienhaus in Drochtersen
(renorviert)</center></b><BR><BR><blockquote><li><b>Aufteilung:</b><BR>EG:
Wohnzimmer, Schlafzimmer, Küche, Bad, Gäste-WC<BR>OG: Schlafzimmer,
Kinderzimmer, Gästezimmer, Duschbad<BR><BR><b><li>Ausstattung:</b>
Teilkeller, Ölzentralheizung (Bj. 95), Iso-Fenster, Rolläden Teppich- u.
Fliesenböden!<BR><BR>Grundstück: ca. 1847 qm mit Schuppen, großer Garten
(Bauplatz)<BR><BR><b><li>Umfeld:</b> Drochtersen OT Barnkrug, Schule,
Kindergarten, Ärzte und Einkaufsmöglichkeiten in der Nähe.<BR><BR><i>Alle
Angaben ohne Gewähr</i></blockquote><BR>
"
[1]=>
string(5) "UTF-8"
[2]=>
NULL
}
}
[4]=>
array(6) {
["file"]=>
string(28) "/usr/lib/php/SOAP/Client.php"
["line"]=>
int(281)
["function"]=>
string(7) "__parse"
["class"]=>
string(11) "soap_client"
["type"]=>
string(2) "->"
["args"]=>
array(3) {
[0]=>
&string(1461) "
Drochtersen / Barnkrug
78914222
1
<b><center>Einfamilienhaus in Drochtersen
(renorviert)</center></b><BR><BR><blockquote><li><b>Aufteilung:</b><BR>EG:
Wohnzimmer, Schlafzimmer, Küche, Bad, Gäste-WC<BR>OG: Schlafzimmer,
Kinderzimmer, Gästezimmer, Duschbad<BR><BR><b><li>Ausstattung:</b>
Teilkeller, Ölzentralheizung (Bj. 95), Iso-Fenster, Rolläden Teppich- u.
Fliesenböden!<BR><BR>Grundstück: ca. 1847 qm mit Schuppen, großer Garten
(Bauplatz)<BR><BR><b><li>Umfeld:</b> Drochtersen OT Barnkrug, Schule,
Kindergarten, Ärzte und Einkaufsmöglichkeiten in der Nähe.<BR><BR><i>Alle
Angaben ohne Gewähr</i></blockquote><BR>
"
[1]=>
string(5) "UTF-8"
[2]=>
&NULL
}
}
[5]=>
array(6) {
["file"]=>
string(38) ...."
["line"]=>
int(13)
["function"]=>
string(4) "call"
["class"]=>
string(11) "soap_client"
["type"]=>
string(2) "->"
["args"]=>
array(3) {
[0]=>
string(11) "random_immo"
[1]=>
&array(1) {
[0]=>
object(soap_value)(11) {
["value"]=>
string(9) "010100285"
["name"]=>
string(5) "kndnr"
["type"]=>
string(6) "string"
["namespace"]=>
string(0) ""
["type_namespace"]=>
string(0) ""
["attributes"]=>
array(0) {
}
["arrayType"]=>
string(0) ""
["options"]=>
array(0) {
}
["nqn"]=>
&object(qname)(3) {
["name"]=>
string(5) "kndnr"
["ns"]=>
string(0) ""
["namespace"]=>
string(0) ""
}
["tqn"]=>
&object(qname)(3) {
["name"]=>
string(6) "string"
["ns"]=>
string(0) ""
["namespace"]=>
string(0) ""
}
["type_prefix"]=>
string(0) ""
}
}
[2]=>
array(1) {
["namespace"]=>
string(8) "urn:immo"
}
}
}
}
["callback"]=>
NULL
}
The Server source:
<?
require_once '/usr/lib/php/SOAP/Server.php';
class SOAP_immo {
function SOAP_immo () {
$this->__dispatch_map['random_immo'] =
array (
'in' => array('kndnr' => 'string'),
'out' => array (
array (
'standort' => 'string',
'id' => 'int',
'bildtyp1' => 'string',
'text' => 'string'
)
)
);
}
function random_immo ($kndnr='') {
pg_connect(');
$sql=pg_query("select standort, id, bildtyp1, text
from immo
where kundennummer='$kndnr' and typ!='0'
order by random()
limit 1") or die (pg_last_error());
$result = pg_fetch_assoc($sql);
return $result;
}
}
$server_class=new SOAP_immo();
$server = new SOAP_Server();
$server->_auto_translation = true;
$server->addObjectMap($server_class, 'urn:immo');
$server->service($HTTP_RAW_POST_DATA);
>
And the Client:
require_once 'SOAP/Client.php';
$url=...';
$soap=new SOAP_Client($url);
$params=array (
new SOAP_Value ('kndnr', 'string', '...')
);
$blah=$soap->call('random_immo', $params, array('namespace' =>
'urn:immo'));
echo '<pre>';
var_dump($blah);
----
Thx for your help.
--
Sönke
--
PEAR General Mailing List (http://pear.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php