AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke HTTP Get XML Datei empfangen
Thema durchsuchen
Ansicht
Themen-Optionen

HTTP Get XML Datei empfangen

Ein Thema von LaCosaMia · begonnen am 14. Mai 2015 · letzter Beitrag vom 14. Mai 2015
Antwort Antwort
Seite 3 von 3     123   
LaCosaMia

Registriert seit: 14. Mai 2015
15 Beiträge
 
#21

AW: HTTP Get XML Datei empfangen

  Alt 14. Mai 2015, 19:09
( die in einem Stream übertragen wird und nicht aus einem besteht).
Richtig

Die Datei ist ca. 3 KB groß.
In der Datei befinden sich Bestellparamter, welche auf Plausibilität geprüft werden.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#22

AW: HTTP Get XML Datei empfangen

  Alt 14. Mai 2015, 19:20
Aber je nach Ergebnis muss ja die Weiterverarbeitung im .Net Programm erfolgen.
Wie erfolgt die Plausibilitätsprüfung?
Welche Komponenten sind den wichtig?
Markus Kinzler
  Mit Zitat antworten Zitat
LaCosaMia

Registriert seit: 14. Mai 2015
15 Beiträge
 
#23

AW: HTTP Get XML Datei empfangen

  Alt 14. Mai 2015, 19:29
Die Plausibilitätsprüfung findet bisher im .net Programm noch gar nicht statt. Daher die Vorstellung es mit Delphi lösen zu können.
Die Prüfungen in Form von Delphi Komponenten bestehen, da es noch andere Transportwege für die Bestelldatei gibt.

Am geschicktesten wäre es so, wie ich es mit C# schon gelöst habe.
Ich nehme den HttpRequest.InputStream an und gebe nach der Prüfung mit Return ein Orderresponse zurück.

Danke
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: HTTP Get XML Datei empfangen

  Alt 14. Mai 2015, 19:39
Dir zu Helfen ist schwer, da Du die Fragen irgendwie immer beantwortest ohne diese wirklich zu beantworten. Wenn die Frage war, wie die Plausibilitätsprüfung erfolgt was für Komponenten es sind, hast Du beidest mal geantwortet, warum Du das willst.

Das es andere Bestellwege gibt ist hier zudem unerheblich. Du erzeugt einen Bruch im Vorgang, in dem du ein anderes Programm dazwischenschiebst.
Du kannst das Problem wie schon angedeutet über ein Stand alone Delphi-Programm (CLI oder WebServer) oder ein Webservermodul lösen ( dso oder iaspi) ein Webservermodul ist aber ein "Konsolenprogramm" da funktionieren keine (grafischen) Komponenten.
Markus Kinzler
  Mit Zitat antworten Zitat
LaCosaMia

Registriert seit: 14. Mai 2015
15 Beiträge
 
#25

AW: HTTP Get XML Datei empfangen

  Alt 14. Mai 2015, 19:59
Die Prüfung findet in einer selbstgeschriebenen XML Komponente statt.
Wie muss der Web Service in Delphi aussehen, das ich adäquat zum C# Webservice den Http Input Stream annehmen kann?
  Mit Zitat antworten Zitat
LaCosaMia

Registriert seit: 14. Mai 2015
15 Beiträge
 
#26

AW: HTTP Get XML Datei empfangen

  Alt 14. Mai 2015, 20:03
Grafische Komponenten brauche ich keine.
Über eine Konsolenanwendung habe ich auch schon nachgedacht. Wie schaffe ich es, dass die Konsolenanwendung den Stream annimmt, welcher per HTTP Post versand wurde?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#27

AW: HTTP Get XML Datei empfangen

  Alt 14. Mai 2015, 20:04
Kommt auf den c# Webservice an.

Aber ich würde mir eher überlegen, ob diese Vorgehensweise sinnvoll ist. U.U. schaftst Du Dir somit nur Probleme, abgesehen das Du unnötigerweise mehrfach das Gleiche machst ( wie z.B. das Parsen der XML. Ich würde die Plausibilitätsprüfung direkt in ASP.Net machen. Somit muß die XML-Struktur nur einmal geparst und interpretiert werden.
Markus Kinzler
  Mit Zitat antworten Zitat
LaCosaMia

Registriert seit: 14. Mai 2015
15 Beiträge
 
#28

AW: HTTP Get XML Datei empfangen

  Alt 14. Mai 2015, 20:06
Ja, da muss ich mir nur noch etwas C# Knowhow anlesen.

Wird aber wahrscheinlich das einfachste sein.

Danke.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#29

AW: HTTP Get XML Datei empfangen

  Alt 14. Mai 2015, 20:54
Kann ich den TIdHttpServer auch in Form eines Web Services nutzen ?
Der Web Service soll hinterher auf einem Apache laufen.
Ja, man kann mit TIdHTTPServer auch ohne weiteres einen Web Service bauen. Dazu muss nur eine Methode implementiert werden, in der man auf den Stream des POST Requests zugreifen kann (siehe unten).

Ein TIdHTTPServer ist aber so wie der Apache HTTP Server ein eigenständiger TCP Server. Wenn man ihn mit einem bestehenden Apache verwenden will, dann ist die einfachste Möglichkeit den Apache als Reverse Proxy zu konfigurieren. Der Apache Server leitet dann externe Anfragen an den in Delphi geschriebenen Web Service weiter. Meist genügen dafür ein paar Zeilen in der Apache Konfiguration

Code:
...
ProxyRequests Off
ProxyPass /service http://localhost:8080/service/
ProxyPassReverse /service http://localhost:8080/service/
...
Der Apache kann dann parallel auch andere HTTP Requests bearbeiten, z.B. PHP oder statische Dokumente. Nur die Requests an den Web Service werden an die Delphi Anwendung 'delegiert'.

Die vom Client per POST gesendeten Stream Daten stehen in der PostStream Property des ARequestInfo Parameters des TIdHTTPServer Eventhandler.

Wenn man die Komponente zur Designzeit erzeugt hat und den OnCommandGet EventHandler anklickt, kann man den automatisch erzeugten Sourcecode um die eigene Behandlung ergänzen.

Delphi-Quellcode:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
  ReceivedStream: TStream;
begin
  // weise den Stream meiner temporären Variable zu
  ReceivedStream := ARequestInfo.PostStream;
  // verwende den Stream
  ...
  // Freigeben des Streams ist nicht notwendig, der Stream wird von Indy freigegeben
  // xxxStream.Free;
 
end;
Anstatt den HTTP Server zur Designzeit zu erzeugen kann man ihn auch dynamisch - zur Laufzeit - erstellen. Man benötigt dann nicht mehr die Forms und andere Teile der VCL, was die Web Service Anwendung kleiner macht.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 Uhr.
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