Hallo liebe Leute,
Folgendes möchte ich gerne erreichen, und beisse auf Granit:
Ich möchte, dass der Namespace, den ich generiere, einen Einfluss auf den SOAP-XML-Output hat:
Ich habe einen Webservice:
Und einen Klienten:
Wenn ich den Klienten aufrufe, dann möchte ich gerne über meinen Namespace den XML-Output beeinflussen.
Der namespace.xsd lautet:
In meinem Klienten kann ich ja über
...die Serverantwort ausgeben.
Dort steht aber regelmässig:
...das heisst, meine namespace.xsd scheint igoniert zu werden?
Kann ich denn den XML-SOAP-Output garnicht beeinflussen?
Folgendes möchte ich gerne erreichen, und beisse auf Granit:
Ich möchte, dass der Namespace, den ich generiere, einen Einfluss auf den SOAP-XML-Output hat:
Ich habe einen Webservice:
PHP-Code:
class MyService
{
public function add($x, $y)
{
return $x + $y;
}
}
$options = array(
'uri'=>"http://vm519.rz.uni-osnabrueck.de/soap/namespace.xsd",
'encoding'=>'UTF-8',
'soap_version'=>SOAP_1_2
);
$server = new SOAPServer(null, $options);
$server->setObject(new MyService());
$server->handle();
PHP-Code:
$soap = new SoapClient(
null,
array(
"location" => "http://vm519.rz.uni-osnabrueck.de/soap/webservice.php",
"uri" => "http://vm519.rz.uni-osnabrueck.de/soap/namespace.xsd",
'encoding'=>'UTF-8',
'soap_version'=>SOAP_1_2 ,
'trace'=>1
)
);
echo $soap->add(4, 10);
echo "<br>";
print "Request :\n".htmlspecialchars($soap->__getLastRequest()) ."<p>";
print "Request :\n".htmlspecialchars($soap->__getLastRequestHeaders()) ."<p>";
print "Response:\n".htmlspecialchars($soap->__getLastResponse())."<p>";
print "Response:\n".htmlspecialchars($soap->__getLastResponseHeaders())."<p>";
Der namespace.xsd lautet:
Code:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="zahl1" type="xs:int"/> <xs:element name="zahl2" type="xs:int"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
In meinem Klienten kann ich ja über
PHP-Code:
print "Response:\n".htmlspecialchars($soap->__getLastResponse())."<p>";
Dort steht aber regelmässig:
Code:
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;env:Envelope xmlns:env=&quot;http://www.w3.org/2003/05/soap-envelope&quot; xmlns:ns1=&quot;http://vm519.rz.uni-osnabrueck.de/soap/namespace.xsd&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:enc=&quot;http://www.w3.org/2003/05/soap-encoding&quot;&gt;&lt;env:Body xmlns:rpc=&quot;http://www.w3.org/2003/05/soap-rpc&quot;&gt;&lt;ns1:addResponse env:encodingStyle=&quot;http://www.w3.org/2003/05/soap-encoding&quot;&gt;&lt;rpc:result&gt;return&lt;/rpc:result&gt;&lt;return xsi:type=&quot;xsd:int&quot;&gt;14&lt;/return&gt;&lt;/ns1:addResponse&gt;&lt;/env:Body&gt;&lt;/env:Envelope&gt; <p>
...das heisst, meine namespace.xsd scheint igoniert zu werden?
Kann ich denn den XML-SOAP-Output garnicht beeinflussen?
Kommentar