Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CGI-Einzelanwendung (https://www.delphipraxis.net/189151-cgi-einzelanwendung.html)

BerTa 9. Mai 2016 15:36

CGI-Einzelanwendung
 
Hi,
ich habe das Problem, dass ich einen WebService programmieren muss, aber nicht genau weiß, was ich zu beachten habe und wo ich anfangen soll.

Ziel ist es für einen externen Web-Entwickler einen WebService bereitzustellen, der seine Soap-Anfragen beantwortet.

ich habe zum ersten Test folgendes Tutorial gefunden und einmal durchgearbeitet:

http://www.delphi-treff.de/tutorials...webservices/1/

Ich scheitere nun aber am Aufruf, d.h. mir wird die Seite mit den Service-Infos nicht angezeigt.
Wie binde ich denn mein Exe-File ein?
Hat da eventuell jemand Erfahrungen mit?

Ich verwende Delphi 7.
Als WevServer wurde ein Windows 2012 R2 verwendet (ISS).

Vielen Dank schonmal im voraus.

Bernhard Geyer 9. Mai 2016 17:01

AW: CGI-Einzelanwendung
 
Muss es denn SOAP sein? Reicht nicht auch JSON?
SOAP und D7 sind glaube ich nicht die "besten Freunde". AFAIK ist die Standard-Kompatiblität mit solchen alten Delphi-Versionen nicht sehr hoch.

mjustin 9. Mai 2016 17:35

AW: CGI-Einzelanwendung
 
Für Free Pascal und Delphi gibt es ein Web Service Toolkit, mit dem auch SOAP Server erzeugt werden können:

http://wiki.lazarus.freepascal.org/Web_Service_Toolkit
Zitat:

"Web Service Toolkit” is a web services package for FPC, Lazarus and Delphi; “Web Service Toolkit” is meant to ease web services consumption and creation by FPC, Lazarus and Delphi users.
Eigene Erfahrungen habe ich noch nicht damit gemacht, aber es könnte eine brauchbare Alternative sein.

Ausserdem noch zu beachten für Delphi 7 (und andere Versionen) gibt es ein WSDL Importer Update:

http://cc.embarcadero.com/item/24535

BerTa 12. Mai 2016 14:50

AW: CGI-Einzelanwendung
 
Hi,
ich habe mir nocheinmal ein weiteres Tutorial (ISAPI) angeschaut und auch einen WebService am Laufen:

http://chapmanworld.com/2015/03/30/c...ces-in-delphi/

Wie muss ich denn vorgehen um als Request und Response eine XML-Datei zu verwenden in meinen bereitgestellten Funktionen?

Schöne Grüße

BerTa 25. Mai 2016 15:01

AW: CGI-Einzelanwendung
 
Hi,
ich bins nochmal. Bin noch nicht wirklich vorangekommen.
Funktionen bei denen Integer, String oder Double Werte übergeben werden sind kein Problem.
Ich finde zur Zeit noch keine Lösung was ich beim Server alles beachten muss, um in den Funktionen als Übergabe eine XML-Datei zu verwanden.
Den Text der XML-Datei in einen String zu packen ist vermutlich nicht die Lösung.

Hat irgendwer hier Erfahrungswerte?:oops:

Mavarik 25. Mai 2016 15:39

AW: CGI-Einzelanwendung
 
Zitat:

Zitat von BerTa (Beitrag 1338954)
Den Text der XML-Datei in einen String zu packen ist vermutlich nicht die Lösung.

Soap ist doch schon XML... Was willst Du den senden und warum XML?

SOAP zeichnet sich im Gegensatz zu JSON dadurch aus, dass Du nach eine Import der Schnittstelle Remoteable Delphi Objekte hast.

Dieses Object mit seinen properties wird per XML-SOAP übertragen...

Oder

Willst Du Datensatz als XML Datei senden?

Dann entweder aus den Datensätze eine Classe machen und ganz normal per SOAP "versenden", oder wenn Du die XML Datei nicht interpretieren willst diese ggf. packen und als TByteDynArray senden.

Fertig... Ist nen 3 Zeiler

Rollo62 25. Mai 2016 18:45

AW: CGI-Einzelanwendung
 
Schonmal das probiert ?

Ich würde REST mit JSON einem XML Server vorziehen, weil schlankeres Protokoll.
Oder muss es unbedingt SOAP sein ?

Rollo

BerTa 26. Mai 2016 10:25

AW: CGI-Einzelanwendung
 
Hi,
es sollte schon Soap sein, da der Webentwickler uns diese Vorgabe gemacht hat.

Code:
    function GetMWSt(const Brutto: Double): Double; stdcall;
Ich stehe grad ein wenig auf dem Schlauch. Solch eine Funktion ist ja kein Thema, nur ich will ansteller
der Übergabe Brutto :Double eine XML Datei haben, welche ich in der Funktion verarbeite und eine XML-Datei als Antwort wieder zurück sende.

Mavarik 27. Mai 2016 02:30

AW: CGI-Einzelanwendung
 
Zitat:

Zitat von BerTa (Beitrag 1338985)
Übergabe Brutto :Double eine XML Datei haben, welche ich in der Funktion verarbeite und eine XML-Datei als Antwort wieder zurück sende.

LESEN macht schlau...

Zitat:

Zitat von Mavarik (Beitrag 1338956)
oder wenn Du die XML Datei nicht interpretieren willst diese ggf. packen und als TByteDynArray senden.

Fertig... Ist nen 3 Zeiler


BerTa 27. Mai 2016 07:06

AW: CGI-Einzelanwendung
 
Hi,
Ich habe mich jetzt mal daran versuch es über ein ByteDynArray zu lösen.
Auf dem Server habe ich mit nun ein XML-Dokument erzeugt welches ich zurück geben will.

Server:
Code:
UebXml := TXMLDocument.Create(nil);
UebXml.Active := True;
UebXml.Version := '1.0';
UebXml.Encoding := 'UTF-8';
UebXml.Options := UebXml.Options + [doNodeAutoIndent];
UebXml.DocumentElement := UebXML.CreateNode('APsolutXML', ntElement, '');
UebXml.DocumentElement.AddChild('response').AddChild('status').NodeValue := 0;
UebXml.DocumentElement.ChildNodes.Nodes['response'].AddChild('status_text').NodeValue := 'Status Test';

lResponse := TMemoryStream.Create;
UebXml.SaveToStream(lResponse);

setlength(bytedynarray,lResponse.size);
lResponse.position:=0;
lResponse.read(bytedynarray[0],lResponse.size);

result := bytedynarray;
Am Client verarbeite ich nun die Daten bekommen aber einen Fehler, wenn ich das XML-Dokument aus dem Stream lade. Speichere ich erst eine Datei ab und lade das Dokument dann aus der Datei, scheint es zu laufen.

Client:
Code:
ByteDynArray2 := Service.PruefUser(ByteDynArray);
ByteArrayToFIle(ByteDynArray2,'Client_Response.xml');
lResponse.Write(ByteDynArray[0],SizeOf(ByteDynArray));
lResponse.Position := 0;

UebXml.LoadFromFile('Client_Response2.xml');
UebXml.LoadFromStream(lResponse);
Da der Server und der Client die XML-Dokumente auch weiter verarbeiten sollen, ist es notwendig das XML-Dokument auch wieder einzulesen. Der Umweg über eine Datei ist nicht so schön.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz