Rest is toch geen protocol, maar een set regels voor stateless servers?
Rest is toch geen protocol, maar een set regels voor stateless servers?
Ik zei ook niet dat REST een protocol is. Maar zoveel verschil is er nou ook weer niet tussen een protocol en een set regels. Volgens mij is dat eigenlijk ongeveer de definitie van protocol.
1+1=b
@Goleztrol
De daadwerkelijke melding van mijn programma is:
Maar ik heb even verder gekeken. Het blijkt dat in de eerste krce.com een aanpassing is gemaakt en heb ik dus verkeerde info gegeven.Project krserver.exe raised exception class ERemotableException with message 'Procedure 'PutCertificate' not present'.
De link, die jij mij heb gegeven komt overeen met mijn GetGovernmentExporterPorts functie. Het resultaat wat terug gegeeven moest worden had ik veranderd naar 'GovernmentExporterPortsImpl'. Echter kan ik bij interfaces niet de functie declareren, omdat 'GovernmentExporterPortsImpl' nog niet bekend is. Het rare is ook dat 'Result := (RIO as GovernmentExporterPortsImpl);' niet werd geaccepteerd door de compiler.
@algemeen
Bij initialization is het volgende aangepast:
Hier wordt 'GovernmentExporterPortsImpl' buiten spel gezet. De class definitie alsmede de functies/procedures uit de unit gehaald.Delphi Code:
initialization { GovernmentExporterPorts } InvRegistry.RegisterInterface(TypeInfo(GovernmentExporterPorts), 'http://webservices.client.florecom.org/Government/PortDefinitions', ''); //aanpassing InvRegistry.RegisterAllSOAPActions(TypeInfo(GovernmentExporterPorts), '|[url]http://webservices.client.florecom.org/Government/exporter/PutCertificate_315||http://webservices.client.florecom.org/Government/exporter/GetCertificateStatus_301|http://webservices.client.florecom.org/Government/exporter/GetCertificateDocument_302');[/url] InvRegistry.RegisterInvokeOptions(TypeInfo(GovernmentExporterPorts), ioDocument); InvRegistry.RegisterInvokeOptions(TypeInfo(GovernmentExporterPorts), ioLiteral); { GovernmentExporterPorts - Server implementation class } //aanpassing //InvRegistry.RegisterInvokableClass(GovernmentExporterPortsImpl); RegisterTypeProc0; RegisterTypeProc1; RegisterTypeProc2; RegisterTypeProc3; RegisterTypeProc4; RegisterTypeProc5; RegisterTypeProc6; RegisterTypeProc7; RegisterTypeProc8;
Nu kan ik compileren en het programma starten. de request wordt verstuurd en krijg netjes een response terug.
De aanpassingen na de 'initialization' zorgen voor dat in code keihard wordt gezocht in de juiste SOAP request. Dat heeft als nadeel dat een nieuw request ook handmatig moet worden toegevoegd.
Omdat ik met de huidige WSDLImporter al eerder problemen heb gehad met de krce WSDL import, heeft Embarcadero mij een import unit geleverd met die aanpassing.
Het werkt nu. Maar ik ben toch echt benieuwd hoe ik die 'GovernmentExporterPortsImpl' kan aanroepen.
Delphi is great. Lazarus is more powerfull
Waarom is dat raar? Het is een interface. Die hoeft überhaupt niet door GovernmentExporterPortsImpl geïmplementeerd te worden. GovernmentExporterPortsImpl is gewoon een implementatie. Het idee van deze opzet is dan ook dat heel je applicatie niet eens hoeft te weten dat GovernmentExporterPortsImpl bestaat. Je applicatie gebruikt uitsluitend de interface.Het rare is ook dat 'Result := (RIO as GovernmentExporterPortsImpl);' niet werd geaccepteerd door de compiler.
De vraag is natuurlijk of dat helemaal handig is, want het liefst zou je wel de mogelijkheid willen hebben om een subclass te kunnen maken, en die registreren i.p.v. de standaard-implementatie. Maar het obsessief afschermen van code is helaas iets dat Embarcadero nog steeds niet is afgeleerd. Hoe dan ook, dat is dus alleen belangrijk als je daadwerkelijk de implementatie wilt kunnen aanpassen/overriden.
Last edited by GolezTrol; 14-May-19 at 12:41.
1+1=b
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks