rencarl
22.07.2009, 11:22:41
Hi,
seit einigen Tagen versuche ich einen bestimmten Request zu erstellen, aber irgendwo hakt es und ich komme einfach nicht weiter. Erschwerend kommt hinzu, dass ich noch keinerlei Erfahrung mit Webservices habe. Einen ersten einfachen eigenen Test-Webservice habe ich aber bereits einrichten können. Jetzt aber zum eigentlichen Webservice.
Die Anfrage (Request) muss wie folgt aussehen:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v001="http://www.deltavista.com/dspone/ordercheck-if/V001">
<soapenv:Header>
<v001:messageContext>
<v001:credentials>
<v001:user>xxx</v001:user>
<v001:password>xxx</v001:password>
</v001:credentials>
</v001:messageContext>
</soapenv:Header>
<soapenv:Body>
<v001:orderCheckRequest>
<v001:product>
<v001:name>CreditCheckBusiness</v001:name>
<v001:country>DEU</v001:country>
</v001:product>
<v001:searchedCandidate>
<v001:legalForm>COMPANY</v001:legalForm>
<v001:address>
<v001:name>Deltavista</v001:name>
<v001:location>
<v001:street>Kaiserstrasse</v001:street>
<v001:house>217</v001:house>
<v001:city>Karlsruhe</v001:city>
<v001:zip>76133</v001:zip>
</v001:location>
</v001:address>
</v001:searchedCandidate>
</v001:orderCheckRequest>
</soapenv:Body>
</soapenv:Envelope>
Bisher habe ich folgende Anfrage hinbekommen:
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
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/">
<SOAP-ENV:Body>
<ns2449:hello xmlns:ns2449="http://tempuri.org">
<product>
<name xsi:type="xsd:string">QuickCheckBusiness</name>
<country xsi:type="xsd:string">DEU</country>
</product>
<searchedCandidate>
<name xsi:type="xsd:string">Deltavista</name>
<location>
<street xsi:type="xsd:string">Kaiserstrasse</street>
<house xsi:type="xsd:string">217</house>
<city xsi:type="xsd:string">Karlsruhe</city>
<zip xsi:type="xsd:string">76133</zip>
</location>
</searchedCandidate>
</ns2449:hello>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Wie bekomme ich jetzt z. B. den Header in die Anfrage hinein? Oder wie bekomme ich den korrekten Namespace (v001) hinzu?
------------------------------------------------------------------------------------------------------
Ausprobiert habe ich bisher folgendes:
// Pull in the NuSOAP code
require_once('nusoap-0.7.3/lib/nusoap.php');
// Create the client instance
$client = new nusoap_client('https://test-dspone.deltavista.com/dspone/services/OrderCheckService?wsdl',true);
$err = $client->getError();
if($err){
echo '<h2>Constructor error</h2><pre>'.$err.'</pre>';
}
$parameter = array(
'product' => array(
'name' => 'QuickCheckBusiness',
'country' => 'DEU'),
'searchedCandidate' => array(
'name' => 'Deltavista',
'location' => array(
'street' => 'Kaiserstrasse',
'house' => '217',
'city' => 'Karlsruhe',
'zip' => '76133')
)
);
$proxy = $client->getProxy();
$result = $proxy->orderCheck($parameter);
if($client->fault) {
print_r($result);
} else {
$err = $client->getError();
if ($err) {
echo '<h2>Error</h2><pre>'.$err.'</pre>';
} else {
echo '<h2>Result</h2><pre>';
print_r($result);
echo '</pre>';
}
}
Entweder mach ich was falsch, oder die Test-Seite von deltavista funktioniert nicht. Auf jeden Fall erhalte ich ein leeres Resultat. $client->request und $client->response sind auch leer. Wenn ich meinen Test-Webservice 'http://localhost/webservices/server.php' verwende, kann ich mir wenigstens mit $client->request und $client->response XML-Code ausgeben lassen.
Desweiteren habe ich die Anfrage auch ohne Proxy ausgetestet:
$result = $client->call('orderCheck', $parameter);
Dies liefert mir aber eine Fehlermeldung, die ich nicht interpretieren kann:
wsdl error: http://www.deltavista.com/dspone/ordercheck-if/V001:orderCheckRequest^ (orderCheckRequest^) is not a supported type.
Ich vermute, dass die Parameterübergabe falsch ist, aber wie ist sie dann richtig? Wenn ich als $parameter einen einfachen String übergebe, erhalte ich folgende Fehlermeldung:
HTTP Error: Couldn't open socket connection to server http://10.50.1.21:8085/dspone/services/OrderCheckService, Error (110): Connection timed out
seit einigen Tagen versuche ich einen bestimmten Request zu erstellen, aber irgendwo hakt es und ich komme einfach nicht weiter. Erschwerend kommt hinzu, dass ich noch keinerlei Erfahrung mit Webservices habe. Einen ersten einfachen eigenen Test-Webservice habe ich aber bereits einrichten können. Jetzt aber zum eigentlichen Webservice.
Die Anfrage (Request) muss wie folgt aussehen:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v001="http://www.deltavista.com/dspone/ordercheck-if/V001">
<soapenv:Header>
<v001:messageContext>
<v001:credentials>
<v001:user>xxx</v001:user>
<v001:password>xxx</v001:password>
</v001:credentials>
</v001:messageContext>
</soapenv:Header>
<soapenv:Body>
<v001:orderCheckRequest>
<v001:product>
<v001:name>CreditCheckBusiness</v001:name>
<v001:country>DEU</v001:country>
</v001:product>
<v001:searchedCandidate>
<v001:legalForm>COMPANY</v001:legalForm>
<v001:address>
<v001:name>Deltavista</v001:name>
<v001:location>
<v001:street>Kaiserstrasse</v001:street>
<v001:house>217</v001:house>
<v001:city>Karlsruhe</v001:city>
<v001:zip>76133</v001:zip>
</v001:location>
</v001:address>
</v001:searchedCandidate>
</v001:orderCheckRequest>
</soapenv:Body>
</soapenv:Envelope>
Bisher habe ich folgende Anfrage hinbekommen:
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
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/">
<SOAP-ENV:Body>
<ns2449:hello xmlns:ns2449="http://tempuri.org">
<product>
<name xsi:type="xsd:string">QuickCheckBusiness</name>
<country xsi:type="xsd:string">DEU</country>
</product>
<searchedCandidate>
<name xsi:type="xsd:string">Deltavista</name>
<location>
<street xsi:type="xsd:string">Kaiserstrasse</street>
<house xsi:type="xsd:string">217</house>
<city xsi:type="xsd:string">Karlsruhe</city>
<zip xsi:type="xsd:string">76133</zip>
</location>
</searchedCandidate>
</ns2449:hello>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Wie bekomme ich jetzt z. B. den Header in die Anfrage hinein? Oder wie bekomme ich den korrekten Namespace (v001) hinzu?
------------------------------------------------------------------------------------------------------
Ausprobiert habe ich bisher folgendes:
// Pull in the NuSOAP code
require_once('nusoap-0.7.3/lib/nusoap.php');
// Create the client instance
$client = new nusoap_client('https://test-dspone.deltavista.com/dspone/services/OrderCheckService?wsdl',true);
$err = $client->getError();
if($err){
echo '<h2>Constructor error</h2><pre>'.$err.'</pre>';
}
$parameter = array(
'product' => array(
'name' => 'QuickCheckBusiness',
'country' => 'DEU'),
'searchedCandidate' => array(
'name' => 'Deltavista',
'location' => array(
'street' => 'Kaiserstrasse',
'house' => '217',
'city' => 'Karlsruhe',
'zip' => '76133')
)
);
$proxy = $client->getProxy();
$result = $proxy->orderCheck($parameter);
if($client->fault) {
print_r($result);
} else {
$err = $client->getError();
if ($err) {
echo '<h2>Error</h2><pre>'.$err.'</pre>';
} else {
echo '<h2>Result</h2><pre>';
print_r($result);
echo '</pre>';
}
}
Entweder mach ich was falsch, oder die Test-Seite von deltavista funktioniert nicht. Auf jeden Fall erhalte ich ein leeres Resultat. $client->request und $client->response sind auch leer. Wenn ich meinen Test-Webservice 'http://localhost/webservices/server.php' verwende, kann ich mir wenigstens mit $client->request und $client->response XML-Code ausgeben lassen.
Desweiteren habe ich die Anfrage auch ohne Proxy ausgetestet:
$result = $client->call('orderCheck', $parameter);
Dies liefert mir aber eine Fehlermeldung, die ich nicht interpretieren kann:
wsdl error: http://www.deltavista.com/dspone/ordercheck-if/V001:orderCheckRequest^ (orderCheckRequest^) is not a supported type.
Ich vermute, dass die Parameterübergabe falsch ist, aber wie ist sie dann richtig? Wenn ich als $parameter einen einfachen String übergebe, erhalte ich folgende Fehlermeldung:
HTTP Error: Couldn't open socket connection to server http://10.50.1.21:8085/dspone/services/OrderCheckService, Error (110): Connection timed out