Autor |
Beitrag |
DerNetteNachbar
      
Beiträge: 224
|
Verfasst: Di 23.12.08 13:57
Hallo ihr Lieben,
Ich möchte ein Request an einen Server senden und zwar mittels POST bzw. GET Methode. Die GET Methode klappt (ohne Parameter)auch ganz hervoragend, denn ich bekomme eine XML Datei zurück die ich auswerten könnte. Nur um die richtige XML Datei zu bekommen muss ich die Parameter setzen und genau das bereitet mir etwas Probleme. Die Schnittstellenbeschreibung hab ich nur komme ich da nicht wirklich weiter.
Wenn einer von euch mir helfen könnte würde ich mich sehr freuen.
Die Schnittstellenbeschreibung:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172:
| <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.vdlinde.de/lieferung/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Lieferung" targetNamespace="http://ws.vdlinde.de/lieferung/"> <wsdl:types> <xsd:schema targetNamespace="http://ws.vdlinde.de/lieferung/"> <xsd:complexType name="RequestPosition"> <xsd:sequence> <xsd:element name="PZN" minOccurs="1" maxOccurs="1"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:minLength value="2"></xsd:minLength> <xsd:maxLength value="13"></xsd:maxLength> <xsd:pattern value="[0-9]{2,13}"></xsd:pattern> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="Menge" minOccurs="1" maxOccurs="1">
<xsd:simpleType> <xsd:restriction base="xsd:int">
<xsd:minInclusive value="1"></xsd:minInclusive> <xsd:maxInclusive value="9999"></xsd:maxInclusive> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="Hinweis" minOccurs="0" maxOccurs="1"> <xsd:simpleType> <xsd:restriction base="xsd:string">
<xsd:length value="2"></xsd:length> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="Positionsreferenz" minOccurs="0" maxOccurs="1"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:minLength value="1"></xsd:minLength> <xsd:maxLength value="7"></xsd:maxLength> <xsd:pattern value="[0-9]{1,7}"></xsd:pattern> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="RequestPositionArray"> <xsd:sequence> <xsd:element minOccurs="1" maxOccurs="50" name="RequestPositionElement" type="tns:RequestPosition" /> </xsd:sequence> </xsd:complexType> <xsd:element name="LieferungRequest"> <xsd:complexType> <xsd:sequence> <xsd:element name="Typ" minOccurs="1" maxOccurs="1"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="AUSKUNFT"/> <xsd:enumeration value="AUFTRAG"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="AuftragsNr" minOccurs="0" maxOccurs="1"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:minLength value="1"></xsd:minLength> <xsd:maxLength value="7"></xsd:maxLength> <xsd:pattern value="[0-9]{1,7}"></xsd:pattern> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="AuftragsArt" minOccurs="0" maxOccurs="1"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:minLength value="2"></xsd:minLength> <xsd:maxLength value="2"></xsd:maxLength> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="Liefertermin" minOccurs="0" maxOccurs="1"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="ZH"/> <xsd:enumeration value="ZM"/> <xsd:enumeration value="ZD"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="Positionen" type="tns:RequestPositionArray" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="ResponsePosition"> <xsd:sequence> <xsd:element name="PZN" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="MengeGeliefert" type="xsd:int" minOccurs="1" maxOccurs="1"/> <xsd:element name="MengeVerbundlieferung" type="xsd:int" minOccurs="0" maxOccurs="1"/> <xsd:element name="MengeDisponierbar" type="xsd:int" minOccurs="0" maxOccurs="1"/> <xsd:element name="Defektgrund" type="xsd:string" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ResponsePositionArray"> <xsd:sequence> <xsd:element minOccurs="1" maxOccurs="50" name="ResponsePositionElement" type="tns:ResponsePosition" /> </xsd:sequence> </xsd:complexType> <xsd:element name="LieferungResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="Lieferzeit" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="LieferzeitVerbundlieferung" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="FehlercodeBearbeitung" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="Fehlertext" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="Positionen" type="tns:ResponsePositionArray" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://ws.vdlinde.de/lieferung/"> <xsd:element name="NewOutput" type="xsd:string"></xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="LieferungRequest"> <wsdl:part element="tns:LieferungRequest" name="parameters" /> </wsdl:message> <wsdl:message name="LieferungResponse"> <wsdl:part element="tns:LieferungResponse" name="parameters" /> </wsdl:message> <wsdl:portType name="Lieferung"> <wsdl:operation name="Lieferung"> <wsdl:input message="tns:LieferungRequest" /> <wsdl:output message="tns:LieferungResponse" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="LieferungSOAP" type="tns:Lieferung"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="Lieferung"> <soap:operation soapAction="http://ws.vdlinde.de/lieferung/Lieferung" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="Lieferung"> <wsdl:port binding="tns:LieferungSOAP" name="LieferungSOAP"> <soap:address location="http://localhost:8080/WebServices/services/Lieferung" /> </wsdl:port> </wsdl:service> </wsdl:definitions> |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); var PostDataStream : TStringStream; ParamData : TStringStream;
begin PostDataStream := TStringStream.Create(''); ParamData := TStringStream.Create(''); ParamData.WriteString('pzn=PZN-7'); ParamData.WriteString('Menge=10'); try IdHTTP1.Post('https://ws.vdlinde.de/ws/services/Lieferung?wsdl', ParamData, PostDataStream); |
Danke schon mal im Vorraus.
liebe Grüsse
Nachbar
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 23.12.08 14:13
Ein TStringStream schreibt exakt, was du an Strings reingibst, nicht mehr und nicht weniger. Wenn Du also WriteString zwei mal aufrufst, dann kommt das einem StrConcat gleich.
Bei den GET-Parametern solltest du daher mal schauen, inwiefern das Voranstellen von & hilft, ansonsten auch mal nach jedem Parameter einen Zeilenumbruch probieren. Weiß grad nicht, wie die Indy's das bei den Parameter-Strömen haben wollen ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
DerNetteNachbar 
      
Beiträge: 224
|
Verfasst: Di 23.12.08 14:18
Das grösste Problem ist die Parameter aus der Schnittstellenbeschreibung in Delphi richtig zu verwenden, deshalb auch meine Frage wenn ich einen Parameter z.B. PZN anspreche und setze ob es dann auch wirklich so ist. Denn über XML mit dem kommunizieren ist mir nicht so verständlich.
liebe Grüsse
|
|
DerNetteNachbar 
      
Beiträge: 224
|
Verfasst: Mi 24.12.08 12:55
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Mi 24.12.08 13:12
Das was du machen willst, ist ja mit einem SOAP Service zu kommunizieren.
Schau dir dazu doch einfach mal Tutorials zu SOAP an. Zum Beispiel auf www.dsdt.info Das ist meiner Meinung nach besser, als wenn du das selber mit den Indys zusammenstöpselst.
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
DerNetteNachbar 
      
Beiträge: 224
|
Verfasst: Mi 24.12.08 16:58
Könnt ihr mir bestimmte Tuts ans Herz legen?
liebe Grüsse
nachbar
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Do 25.12.08 14:18
Ich muss ganz ehrlich sein, dass ich selber damit noch nicht gearbeitet habe.
Aber ich habe schon viel gutes von den Tutorials auf Dsdt.info gehört. z.b: www.delphi-treff.de/...t/webservice-client/
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
DerNetteNachbar 
      
Beiträge: 224
|
Verfasst: Do 25.12.08 21:07
Die kenn ich schon, leider haben die nicht den erhofften Effekt gebracht.
|
|
DerNetteNachbar 
      
Beiträge: 224
|
Verfasst: Sa 27.12.08 16:17
|
|
DerNetteNachbar 
      
Beiträge: 224
|
Verfasst: Sa 03.01.09 16:07
Hallo Leute, bin etwas weitergekommen, leider nicht wo weit wie erhofft.
Das heir ist die erzeugte Unit aus der WSDL Datei
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255:
| unit Lieferung1;
interface
uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns,vdlconst;
type
RequestPosition = class; RequestPositionArray = class; ResponsePosition = class; ResponsePositionArray = class;
Liefertermin = (ZH, ZM, ZD);
RequestPosition = class(TRemotable) private FPZN: PZN; FMenge: Menge; FHinweis: Hinweis; FPositionsreferenz: Positionsreferenz; published property PZN: PZN read FPZN write FPZN; property Menge: Menge read FMenge write FMenge; property Hinweis: Hinweis read FHinweis write FHinweis; property Positionsreferenz: Positionsreferenz read FPositionsreferenz write FPositionsreferenz; end;
RequestPositionElement = array of RequestPosition;
RequestPositionArray = class(TRemotable) private FRequestPositionElement: RequestPositionElement; public constructor Create; override; destructor Destroy; override; function GetRequestPositionArray(Index: Integer): RequestPosition; function GetRequestPositionArrayLength: Integer; property RequestPositionArray[Index: Integer]: RequestPosition read GetRequestPositionArray; default; property Len: Integer read GetRequestPositionArrayLength; published property RequestPositionElement: RequestPositionElement read FRequestPositionElement write FRequestPositionElement; end;
ResponsePosition = class(TRemotable) private FPZN: WideString; FMengeGeliefert: Integer; FMengeVerbundlieferung: Integer; FMengeDisponierbar: Integer; FDefektgrund: WideString; published property PZN: WideString read FPZN write FPZN; property MengeGeliefert: Integer read FMengeGeliefert write FMengeGeliefert; property MengeVerbundlieferung: Integer read FMengeVerbundlieferung write FMengeVerbundlieferung; property MengeDisponierbar: Integer read FMengeDisponierbar write FMengeDisponierbar; property Defektgrund: WideString read FDefektgrund write FDefektgrund; end;
ResponsePositionElement = array of ResponsePosition;
ResponsePositionArray = class(TRemotable) private FResponsePositionElement: ResponsePositionElement; public constructor Create; override; destructor Destroy; override; function GetResponsePositionArray(Index: Integer): ResponsePosition; function GetResponsePositionArrayLength: Integer; property ResponsePositionArray[Index: Integer]: ResponsePosition read GetResponsePositionArray; default; property Len: Integer read GetResponsePositionArrayLength; published property ResponsePositionElement: ResponsePositionElement read FResponsePositionElement write FResponsePositionElement; end;
Lieferung = interface(IInvokable) ['{7C862588-7037-A920-972F-D78AD6C9A026}'] procedure Lieferung(const Typ: Typ; const AuftragsNr: AuftragsNr; const AuftragsArt: AuftragsArt; const Liefertermin: Liefertermin; const Positionen: RequestPositionArray; out Lieferzeit: WideString; out LieferzeitVerbundlieferung: WideString; out FehlercodeBearbeitung: WideString; out Fehlertext: WideString; out Positionen1: ResponsePositionArray); stdcall; end;
function GetLieferung(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): Lieferung;
implementation
function GetLieferung(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): Lieferung; const defWSDL = 'C:\Dokumente und Einstellungen\Yewgeny\Desktop\WSDL\VDL Schnittstelle\VDL Test\Lieferung.wsdl'; defURL = 'https://ws.vdlinde.de/ws/services/Lieferung'; defSvc = 'Lieferung'; defPrt = 'LieferungSOAP'; var RIO: THTTPRIO; begin Result := nil; if (Addr = '') then begin if UseWSDL then Addr := defWSDL else Addr := defURL; end; if HTTPRIO = nil then RIO := THTTPRIO.Create(nil) else RIO := HTTPRIO; try Result := (RIO as Lieferung); if UseWSDL then begin RIO.WSDLLocation := Addr; RIO.Service := defSvc; RIO.Port := defPrt; end else RIO.URL := Addr; finally if (Result = nil) and (HTTPRIO = nil) then RIO.Free; end; end;
constructor RequestPositionArray.Create; begin inherited Create; FSerializationOptions := [xoInlineArrays]; end;
destructor RequestPositionArray.Destroy; var I: Integer; begin for I := 0 to Length(FRequestPositionElement)-1 do if Assigned(FRequestPositionElement[I]) then FRequestPositionElement[I].Free; SetLength(FRequestPositionElement, 0); inherited Destroy; end;
function RequestPositionArray.GetRequestPositionArray(Index: Integer): RequestPosition; begin Result := FRequestPositionElement[Index]; end;
function RequestPositionArray.GetRequestPositionArrayLength: Integer; begin if Assigned(FRequestPositionElement) then Result := Length(FRequestPositionElement) else Result := 0; end;
constructor ResponsePositionArray.Create; begin inherited Create; FSerializationOptions := [xoInlineArrays]; end;
destructor ResponsePositionArray.Destroy; var I: Integer; begin for I := 0 to Length(FResponsePositionElement)-1 do if Assigned(FResponsePositionElement[I]) then FResponsePositionElement[I].Free; SetLength(FResponsePositionElement, 0); inherited Destroy; end;
function ResponsePositionArray.GetResponsePositionArray(Index: Integer): ResponsePosition; begin Result := FResponsePositionElement[Index]; end;
function ResponsePositionArray.GetResponsePositionArrayLength: Integer; begin if Assigned(FResponsePositionElement) then Result := Length(FResponsePositionElement) else Result := 0; end;
initialization InvRegistry.RegisterInterface(TypeInfo(Lieferung), 'http://ws.vdlinde.de/lieferung/', ''); InvRegistry.RegisterDefaultSOAPAction(TypeInfo(Lieferung), 'https://ws.vdlinde.de/lieferung/Lieferung'); InvRegistry.RegisterInvokeOptions(TypeInfo(Lieferung), ioDocument); RemClassRegistry.RegisterXSInfo(TypeInfo(Typ), 'http://ws.vdlinde.de/lieferung/', 'Typ'); RemClassRegistry.RegisterXSInfo(TypeInfo(Liefertermin), 'http://ws.vdlinde.de/lieferung/', 'Liefertermin'); RemClassRegistry.RegisterXSClass(RequestPosition, 'http://ws.vdlinde.de/lieferung/', 'RequestPosition'); RemClassRegistry.RegisterXSInfo(TypeInfo(RequestPositionElement), 'http://ws.vdlinde.de/lieferung/', 'RequestPositionElement'); RemClassRegistry.RegisterXSClass(RequestPositionArray, 'http://ws.vdlinde.de/lieferung/', 'RequestPositionArray'); RemClassRegistry.RegisterSerializeOptions(RequestPositionArray, [xoInlineArrays]); RemClassRegistry.RegisterXSClass(ResponsePosition, 'http://ws.vdlinde.de/lieferung/', 'ResponsePosition'); RemClassRegistry.RegisterXSInfo(TypeInfo(ResponsePositionElement), 'http://ws.vdlinde.de/lieferung/', 'ResponsePositionElement'); RemClassRegistry.RegisterXSClass(ResponsePositionArray, 'http://ws.vdlinde.de/lieferung/', 'ResponsePositionArray'); RemClassRegistry.RegisterSerializeOptions(ResponsePositionArray, [xoInlineArrays]); end. |
Und das der Code den ich dafür benutze eine Anfrage an den Server zu senden
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48:
| procedure TForm1.HttpRioHttpWebNodeBeforePost( const HTTPReqResp: THTTPReqResp; Data: Pointer); var TimeOut : integer; begin TimeOut := 2000; if not InternetSetOption(Data, INTERNET_OPTION_RECEIVE_TIMEOUT, Pointer(@TimeOut), SizeOf(TimeOut)) then ShowMessage(SysErrorMessage(GetLastError));
if not InternetSetOption(Data, INTERNET_OPTION_USERNAME, PChar(rio.HTTPWebNode.UserName), Length(rio.HTTPWebNode.UserName)) then ShowMessage(SysErrorMessage(GetLastError));
if not InternetSetOption(Data, INTERNET_OPTION_PASSWORD, PChar(rio.HTTPWebNode.Password), Length (rio.HTTPWebNode.Password)) then ShowMessage(SysErrorMessage(GetLastError)); end;
procedure TForm1.Button4Click(Sender: TObject); var rpa : RequestPositionArray; rpa1 : ResponsePositionArray; rp : RequestPosition; s,s1,s2,s3,s4,s5: widestring; len : integer; begin if not Assigned(rio) then begin rio := THTTPRIO.Create(self); rio.HTTPWebNode.UserName := 'username'; rio.HTTPWebNode.Password := 'password'; rio.HTTPWebNode.OnBeforePost := self.HttpRioHttpWebNodeBeforePost; end; if not assigned(lf) then begin lf := GetLieferung(True); lf.Lieferung('AUFTRAG',s,s1,ZH,rpa,s2,s3,s4,s4,rpa1);
rpa.Create; rpa.GetRequestPositionArray(10); rp := rpa.GetRequestPositionArray(10); end; end; |
Aber das Problem: Die Funktion lf.Lieferung liefert mir einen Fehler: Dateityp Typ unbekannt. Kann das jemand für mich bitte ausprobieren und gegenfals helfen.
Danke schon mal im Vorraus.
Nachbar
|
|
DerNetteNachbar 
      
Beiträge: 224
|
Verfasst: So 04.01.09 21:59
|
|
DerNetteNachbar 
      
Beiträge: 224
|
Verfasst: Mo 05.01.09 12:29
Hat den keine eine leise Ahnung wie ich die TYpen definieren soll? In der WSDL Datei sind die als string definiert, jedoch wird mir derselbe Fehler gemeldet: und zwar der erste in der Funktion übergebene Typ als 'unexpected subelement Typ'. Typ ist in dem Fall die Definition davon.
MfG
|
|
Bernhard Geyer
      
Beiträge: 721
Erhaltene Danke: 3
|
Verfasst: Mo 05.01.09 14:27
Die Delphi-WSDL/SOAP-Implementierungen sind in älteren Delphi-Versionen für Real-Life-Schnittstellen unbrauchbar da zu fehlerhaft/zu wenig interoperable.
MS hat ein Toolkit veröffentlich um zu bestehenden WSDL/SOAP-Schnittstellen einen COM-Wrapper bereitzustellen (Download-URL im Moment mir nicht mehr geläufig). Dieser düfte relativ Problemlos verwendbar sein.
|
|
DerNetteNachbar 
      
Beiträge: 224
|
Verfasst: Mo 05.01.09 15:23
Ich benutze Delphi 7 bzw. Delphi 2007 und andere Schnittstellen wie Google klappen einwandfrei.
|
|
DerNetteNachbar 
      
Beiträge: 224
|
Verfasst: Di 06.01.09 10:08
|
|
DerNetteNachbar 
      
Beiträge: 224
|
Verfasst: Di 06.01.09 13:31
Kennt jemand diesen Com Wrapper? bzw. wie man diesen verwendet?
MfG
|
|
Bernhard Geyer
      
Beiträge: 721
Erhaltene Danke: 3
|
Verfasst: Di 06.01.09 20:35
|
|
DerNetteNachbar 
      
Beiträge: 224
|
Verfasst: Mi 07.01.09 10:43
Ich konnte da leider nicht sehr viel rauslesen. Kennt Ihr vielleicht paar Sample Codes für Delphi?
MfG
|
|