Einzelnen Beitrag anzeigen

Zwixx

Registriert seit: 2. Nov 2006
37 Beiträge
 
Delphi 10.3 Rio
 
#1

SOAP-Abfrage führt zu Abstürz des Programms

  Alt 18. Mär 2009, 11:55
Dies ist mein erster Versuch mit SOAP unter Delphi. Ich habe einen JBoss-ApplicationServer, darauf einen WebService deployed und wollte diesen von Delphi aus zugreifen (von PHP aus funktioniert dies).

Ich gabe folgende WSDL:
XML-Code:
<definitions name='MyWebServiceService' targetNamespace='http://MyWebService/' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://MyWebService/' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
 <types>
  <xs:schema targetNamespace='http://MyWebService/' version='1.0' xmlns:tns='http://MyWebService/' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
   <xs:element name='calci' type='tns:calci'/>
   <xs:element name='calciResponse' type='tns:calciResponse'/>
   <xs:element name='callc' type='tns:callc'/>
   <xs:element name='callcResponse' type='tns:callcResponse'/>
   <xs:complexType name='calci'>
    <xs:sequence>
     <xs:element minOccurs='0' name='p1' type='xs:string'/>
     <xs:element minOccurs='0' name='p2' type='xs:string'/>
    </xs:sequence>
   </xs:complexType>
   <xs:complexType name='calciResponse'>
    <xs:sequence>
     <xs:element minOccurs='0' name='return' type='xs:string'/>
    </xs:sequence>
   </xs:complexType>
   <xs:complexType name='callc'>
    <xs:sequence/>
   </xs:complexType>
   <xs:complexType name='callcResponse'>
    <xs:sequence>
     <xs:element minOccurs='0' name='return' type='xs:string'/>
    </xs:sequence>
   </xs:complexType>
  </xs:schema>
 </types>
 <message name='MyWebService_callc'>
  <part element='tns:callc' name='callc'></part>
 </message>
 <message name='MyWebService_calciResponse'>
  <part element='tns:calciResponse' name='calciResponse'></part>
 </message>
 <message name='MyWebService_callcResponse'>
  <part element='tns:callcResponse' name='callcResponse'></part>
 </message>
 <message name='MyWebService_calci'>
  <part element='tns:calci' name='calci'></part>
 </message>
 <portType name='MyWebService'>
  <operation name='calci' parameterOrder='calci'>
   <input message='tns:MyWebService_calci'></input>
   <output message='tns:MyWebService_calciResponse'></output>
  </operation>
  <operation name='callc' parameterOrder='callc'>
   <input message='tns:MyWebService_callc'></input>
   <output message='tns:MyWebService_callcResponse'></output>
  </operation>
 </portType>
 <binding name='MyWebServiceBinding' type='tns:MyWebService'>
  <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
  <operation name='calci'>
   <soap:operation soapAction=''/>
   <input>
    <soap:body use='literal'/>
   </input>
   <output>
    <soap:body use='literal'/>
   </output>
  </operation>
  <operation name='callc'>
   <soap:operation soapAction=''/>
   <input>
    <soap:body use='literal'/>
   </input>
   <output>
    <soap:body use='literal'/>
   </output>
  </operation>
 </binding>
 <service name='MyWebServiceService'>
  <port binding='tns:MyWebServiceBinding' name='MyWebServicePort'>
   <soap:address location='http://testserver:8080/WebApplication/MyWebService'/>
  </port>
 </service>
</definitions>
Dieser wurde von der Netbeans IDE 6.5 erstellt und soweit ging dort auch alles.

Ich habe dann dieses Schema in Delphi 2007 über den Assistenten importiert und habe versucht es auszuführen mit:
Delphi-Quellcode:
var
  test : MyWebService;
begin
  test := GetMyWebService(True);
  showmessage(test.calci('100', '100'));
end;
der erste Aufruf Klappt (Ich bekomme anscheinend auch ein gültiges Objekt zurück)
dann...

In Projekt abc.exe trat ein Problem mit folgender Meldung auf: 'access violation at 0x7c9452f5: write of address 0x016a0fec'. Prozess angehalten.

Woran kann das liegen?
  Mit Zitat antworten Zitat