SAOP-webservice mit WSDL ansprechen?

Thares

Lt. Commander
Registriert
Juli 2007
Beiträge
2.046
Ich eröffne dieses Theard auf wunsch eines Freundes,der was wissen wollte!
......................................................................................................................................................
Hallo zusammen,

ich begebe mich grade auf den Pfad der Webservice entwicklung und möchte nun in unserm Firmen-Intranet einen eben solchen anbieten.

Dazu erstmal die php-Datei:
Code:
function getQrHash($kreis, $key)
{
   //Includes einbinden
   foreach (glob('./inc/*.class.php') as $filename) 
   {
      require_once $filename;
   }
   
   
   return '1035554688733133133553';
}


//SOAS-Server generieren und Function bekannt machen
$server = new SoapServer
(
   NULL,
   array('uri' => "http://web02.dev.firma.info/zs/zwwweb/services/qrGenerator/")
);
$server->addFunction('getQrHash');
$server->handle();

Nun die dazu passende WSDL:
Code:
<?xml version ='1.0' encoding ='UTF-8' ?> 
<definitions name='qrHashService' 
  targetNamespace='http://web02.dev.server.info/zs/zwwweb/services/qrGenerator/qrHashService.wsdl' 
  xmlns:tns='http://web02.dev.obi.info/zs/zwwweb/services/qrGenerator/qrHashService.wsdl' 
  xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
  xmlns:xsd='http://www.w3.org/2001/XMLSchema'
  xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
  xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
  xmlns='http://schemas.xmlsoap.org/wsdl/'>

<message name='getQrHashRequest'> 
  <part name='kreis' type='xsd:int'/>
  <part name='key' type='xsd:string'/>
</message> 
<message name='getQrHashResponse'> 
  <part name='Result' type='xsd:int'/> 
</message> 

<portType name='qrHashServicePortType'> 
  <operation name='getQrHash'> 
    <input message='tns:getQrHashRequest'/> 
    <output message='tns:getQrHashResponse'/> 
  </operation> 
</portType> 

<binding name='qrHashServiceBinding' type='tns:qrHashServicePortType'> 
  <soap:binding style='rpc' 
    transport='http://schemas.xmlsoap.org/soap/http'/> 
  <operation name='getQrHash'> 
    <soap:operation soapAction='urn:qrHashService#getQrHash'/> 
    <input> 
      <soap:body use='encoded' namespace='urn:qrHashService' 
        encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> 
    </input> 
    <output> 
      <soap:body use='encoded' namespace='urn:qrHashService' 
        encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> 
    </output> 
  </operation> 
</binding> 

<service name='qrHashService'> 
  <port name='qrHashServicePort' binding='qrHashServiceBinding'> 
    <soap:address location='http://web02.dev.server.info/zs/zwwweb/services/qrGenerator/qrServer.php'/> 
  </port> 
</service> 
</definitions>

Nun der Versuch es über PHP einzubinden, was wunderbar läuft:
Code:
//Einbindung ohne WSDL
$client = new SoapClient(NULL, 
array( 
"location" => "http://web02.dev.server.info/zs/zwwweb/services/qrGenerator/qrServer.php",
"uri" => "urn:qrHashService",
"style" => SOAP_RPC, 
"use" => SOAP_ENCODED
));

$parameters = array(
new SoapParam('10', 'kreis'),
new SoapParam('10A001', 'key'));

$result = $client->__call(  
"getQrHash", 
$parameters,
array(
"uri" => "urn:qrHashService",             
"soapaction" => "urn:qrHashService#getQrHash"  
));

setDebugMsg($result);
setDebugMsg('<br>');  

//Einbindung mit WSDL
$client2 = new SoapClient('http://web02.dev.server.info/zs/zwwweb/services/qrGenerator/qrHashService.wsdl');  
$result2 = $client2->getQrHash(20, '10A002');
setDebugMsg($result2);


Wenn ich jetzt aber versuche das Ganze über VB.net 2005 einzubinden erhalte ich folgende Fehlermeldung:
.................................................................................................................................................
VB hat geschrieben:
Fehler in benutzerdefiniertem Tool: Webdienst/Schema konnte nicht importiert werden. Die Definition für 'http://schemas.xmlsoap.org/wsdl/:qrHashServiceBinding' wurde nicht gefunden. Die Dienstdefinition mit Namespace 'http://schemas.xmlsoap.org/wsdl/' fehlt.
.................................................................................................................................................
Hat jemand eine Idee, wo mein Fehler liegen könnte?

PS: Wenn dies der falsche bereich ist,bitte verschieben!

MfG
 
Zuletzt bearbeitet:
Deine WSDL-Datei stimmt nicht so ganz. Guck mal oben targetNamespace='http://web02.dev.server.info/zs/zwwweb/services/qrGenerator/qrHashService.wsdl', aber im binding steht namespace='urn:qrHashService'.

gruß
hostile
 
Zurück
Oben