LCD und WSDL-Datei

Per Email, Webservices oder ähnliches...
Antworten
yuc2me
Beiträge: 201
Registriert: 20.01.2010, 17:55

LCD und WSDL-Datei

Beitrag von yuc2me » 03.05.2010, 13:22

Hallo liebe Acronauten,

ich wollte im LCD eine neue Datenanbindung erstellen. Dazu habe ich eine WSDL mit folgendem Code geschrieben:

Code: Alles auswählen

<?xml version ='1.0' encoding ='UTF-8' ?> 
<definitions name='TestService' 
  xmlns:tns='http://example/TestService.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='getAZRequest'>
  <part name='uuid' type='xsd:string' use="required"/>
</message>
 
<message name='getAZResponse'> 
  <part name='AZ' type='xsd:string'/> 
</message> 

<portType name='TestPortType'> 
  <operation name='getAZ'> 
    <input message='tns:getAZRequest'/> 
    <output message='tns:getAZResponse'/> 
  </operation>
</portType> 

<binding name='TestBinding' type='tns:TestPortType'> 
  <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/> 
  <operation name='getAZ'> 
    <soap:operation soapAction=''/> 
    <input> 
      <soap:body use='literal'/> 
    </input> 
    <output> 
      <soap:body use='literal'/> 
    </output> 
  </operation>
</binding> 

<service name='TestService'> 
  <port name='TestPort' binding='TestBinding'> 
    <soap:address location='http://example/service.php'/> 
  </port> 
</service>
 
</definitions>
Die Anfragen werden auf dem Server mit der nusoap.php verarbeitet.

Mein Problem ist jetzt, dass im LCD folgende Fehlermeldung kommt.
getAZ

Diese Operation kann nicht ausgewählt werden:
- keine zugeordnete SOAP-Bindung vorhanden

Eingangsmeldung: getAZRequest
Ausgangsmeldung: getAZResponse
Port-Typ: TestPortType
Kann mir jemand bezüglich meines Problemes helfen? Irgendwo in meiner WSDL muss noch ein Fehler sein...

Ich danke schon mal im vorraus für eure Aufmerksamkeit! ;)

yuc2me
Beiträge: 201
Registriert: 20.01.2010, 17:55

LCD und WSDL-Datei

Beitrag von yuc2me » 03.05.2010, 17:04

Sooo, ich habe es einen Schritt weiter geschafft.

Hier der "etwas mehr richtige" Code:

Code: Alles auswählen

<?xml version ='1.0' encoding ='UTF-8' ?> 
<definitions name='TestService' targetNamespace='http://example/TestService.wsdl'
  xmlns:tns='http://example/TestService.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='getAZRequest'>
  <part name='uuid' type='xsd:string' use="required"/>
  <part name='Datum' type='xsd:string' use="required"/>
</message>
 
<message name='getAZResponse'> 
  <part name='AZ' type='xsd:string'/> 
</message> 

<portType name='TestPortType'> 
  <operation name='getAZ'> 
    <input name='getAZRequest' message='tns:getAZRequest'/> 
    <output name='getAZResponse' message='tns:getAZResponse'/> 
  </operation>
</portType> 

<binding name='TestBinding' type='tns:TestPortType'> 
  <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/> 
  <operation name='getAZ'> 
    <soap:operation soapAction=''/> 
    <input> 
      <soap:body use='literal'/> 
    </input> 
    <output> 
      <soap:body use='literal'/> 
    </output> 
  </operation>
</binding> 

<service name='TestService'> 
  <port name='TestPort' binding='tns:TestBinding'> 
    <soap:address location='http://example/service.php'/> 
  </port> 
</service>
 
</definitions>
Ich kann jetzt die Felder anbinden. Das neue Problem ist, dass der LCD für die Abfrage (eigentlich, wie in der wsdl) bestehend aus mehreren Feldern nur 1 Feld anzeigt. Wie bekomme ich also in die Datenanbindung für die Abfrage mehr Felder hinzugefügt?

Einer von den Profis hier hat doch bestimmt schon mit WebServices gearbeitet?! ;)

yuc2me
Beiträge: 201
Registriert: 20.01.2010, 17:55

LCD und WSDL-Datei

Beitrag von yuc2me » 04.05.2010, 17:35

Neuer Statusbericht. Ich habe es schon geschafft Daten mit dem Server auszutauschen!!! :)  ...nur nicht ganz so wie ich das gerne hätte.

Acrobat sendet das folgende an den Server:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>04.05.2010</soap:Body>
</soap:Envelop>
Er sendet nur das Datum, da ich nur ein Feld anbinden kann.
Sende ich jedoch manuell Folgendes zum Server... tärä ... kommt sogar das Richtige zurück!

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <SOAP-ENV:Body>
        <getAZ>
            <uuid xsi:type="xsd:string">String</uuid>
            <datum xsi:type="xsd:string">04.05.2010</datum>
        </getAZ>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Es ist schön zu sehen, das Acrobat den Funktionsaufruf "getAZ" und die einzelnen Parts der Message nicht sendet. WARUM?
Es muss doch möglich sein, dass ich mehrer Textfelder an eine SOAP-Message binden kann, denn wie gesagt, schick ich das Richtige kommt auch das Richtige zurück:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<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>
        <AZ>RW 05/10 0123456</AZ>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Muss ich denn tatsächlich den Body-Tag komplett selber schreiben?
Ich hatte schon die Idee mit Concat() die einzelnen Felder und den Code zusammen zufügen, aber ich weiß noch nicht so recht, wie ich Anführungsstriche innerhalb von Anführungsstrichen erzeuge?

Für Hilfe wäre ich dankbar.

Antworten