AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Ich habe einen TCPServer als HTTP server und möchte daten aus einem POST JSON Data

Ich habe einen TCPServer als HTTP server und möchte daten aus einem POST JSON Data

Ein Thema von joehd · begonnen am 12. Dez 2022 · letzter Beitrag vom 10. Jan 2023
Antwort Antwort
Seite 2 von 4     12 34   
mytbo

Registriert seit: 8. Jan 2007
472 Beiträge
 
#11

AW: Ich habe einen TCPServer als HTTP server und möchte daten aus einem POST JSON Da

  Alt 12. Dez 2022, 20:09
Und ich habe mich mit REST und HTTP Zeugs und so noch nicht wirklich beschäftigt.
Im Forum gibt es Artikel zur Einführung in Interface-based und methodenbasierte Services. Sie enthalten lauffähige Beispiele. Der methodenbasierte Service SaveFile aus dem Beispiel wird mit TMS WebCore wie folgt aufgerufen:
Delphi-Quellcode:
const
  REQUEST_PATH = 'SaveFile?fileName=%s';
begin
  HTTPRequest.URL := Format(BASE_URL + REQUEST_PATH, [pmcFileName]);
  HTTPRequest.Command := httpPUT;
  HTTPRequest.PostData := ...;
  HTTPRequest.Execute(
    procedure(pmResponse: String; pmRequest: TJSXMLHttpRequest)
    begin
      if pmRequest.Status = 200 then
        ShowMessage(Format('File %s was saved.', [pmcFileName]))
      else
        ShowMessage('Error: File was not saved.');
    end);
end;
Bis bald...
Thomas

Geändert von mytbo (12. Dez 2022 um 20:12 Uhr)
  Mit Zitat antworten Zitat
joehd

Registriert seit: 8. Okt 2008
Ort: Heidelberg
107 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#12

AW: Ich habe einen TCPServer als HTTP server und möchte daten aus einem POST JSON Da

  Alt 13. Dez 2022, 11:39
Danke
ich baue das mit dem Senden und der / Meldung / Fehlermeldung mal ein aber das löst leider mein Empfangsproblem nicht
joe
immer wenn ich was suche finde ich es hier komisch oder ?
Arbeite mit D3 D5 D2007 DXE Prof
  Mit Zitat antworten Zitat
joehd

Registriert seit: 8. Okt 2008
Ort: Heidelberg
107 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#13

AW: Ich habe einen TCPServer als HTTP server und möchte daten aus einem POST JSON Da

  Alt 13. Dez 2022, 16:22
Kann es sein das ich da die schleife zu früh beende du sagtest es kommt eine Leerzeile ?
Ja und nein.

Du brichst vorher schon ab, da wo der Header ended.

Zitat:
while RawData <> 'do
Daran liegt es leider nicht das da nichts mehr kommt .... DEr Puffer ist leer und vollständig gelesen. Ich denke es braucht ein response das der Post gesendet wird ...
joe
immer wenn ich was suche finde ich es hier komisch oder ?
Arbeite mit D3 D5 D2007 DXE Prof
  Mit Zitat antworten Zitat
joehd

Registriert seit: 8. Okt 2008
Ort: Heidelberg
107 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#14

AW: Ich habe einen TCPServer als HTTP server und möchte daten aus einem POST JSON Da

  Alt 28. Dez 2022, 18:36
Hallo also nachdem ich doch so nett gebeten wurde das mit INDY zu machen habe ich jetzt mal die idHTTPServer genutzt.
Alles von neuem. Ich habe mir einige Beispiele angeschaut aber schon beim empfangenen Option Command stellt sich die Frage wie gebe ich den Send zurück.

Aresponseinfo.ResponseText := 'HTTP/1.0 200 OK';

klappt nicht und ich habe schon einiges Probiert

Delphi-Quellcode:
procedure TForm1.IdHTTPServer1CommandOther(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
 // arequestinfo.URI angeforderte Seite
 // arequestinfo.Command komando welches gegeben wurde get Post ....
 // arequestinfo.Document Seiteninfoi nach der Domain
 // arequestinfo.Host
 // arequestinfo.From aufrufende Adresse

 memo1.Lines.Add('CommandGet: URI: ' + arequestinfo.URI + ' | Command: '+ arequestinfo.Command + ' | PostStream: ' + mystreamtostring(arequestinfo.PostStream)) ;
 memo1.Lines.Add('Document: ' + arequestinfo.Document + ' | Params: ' + arequestinfo.Params.Text + ' | Host: ' + arequestinfo.Host + ' | From: ' + arequestinfo.From );
 memo1.Lines.Add(' Konnektion: ' + arequestinfo.Connection );

if arequestinfo.Command = 'OPTIONSthen
Begin // Abfrage des WEB Servers was kannst du
  Aresponseinfo.ResponseText := 'HTTP/1.0 200 OK';
  memo1.Lines.Add('Options : ' +'HTTP/1.0 200 OK');
End;

end;
joe
immer wenn ich was suche finde ich es hier komisch oder ?
Arbeite mit D3 D5 D2007 DXE Prof
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
 
Delphi 6 Professional
 
#15

AW: Ich habe einen TCPServer als HTTP server und möchte daten aus einem POST JSON Da

  Alt 28. Dez 2022, 19:41
Hmm..

wieso nicht einfach :

ResponseInfo.ResponseNo = 200;

Der Responsetext ist für die Rückgabedaten...
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
joehd

Registriert seit: 8. Okt 2008
Ort: Heidelberg
107 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#16

AW: Ich habe einen TCPServer als HTTP server und möchte daten aus einem POST JSON Da

  Alt 29. Dez 2022, 09:57
Guter Tipp, das probiere ich doch gleich mal aus ....
ich bin gerade mal voll der Anfänger mit der Komponente.
Der Sender bricht auf jeden Fall derzeit ab, weil falsche Antwort Ich probiere dein Vorschlag ... DANKE

Ich versuche gerade mal den Port mit etwas zu tracen das ich sehe was da eigentlich passiert...
joe
immer wenn ich was suche finde ich es hier komisch oder ?
Arbeite mit D3 D5 D2007 DXE Prof
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
737 Beiträge
 
#17

AW: Ich habe einen TCPServer als HTTP server und möchte daten aus einem POST JSON Da

  Alt 29. Dez 2022, 10:07
Mach doch einfach Mal in Delphi Datei -> Neu -> Weitere -> Delphi-Projekte -> WebBroker -> Web Server Anwendung.

Dann kannst du im WebModule einfach "Actions" anlegen und dort die Daten verarbeiten...

Und bedenke, dass ein Webserver mehrere Anfragen gleichzeitig abarbeiten kann; deshalb arbeitet Indy an der Stelle multithreaded. Auf die Oberfläche oder globale Variablen zuzugreifen ist also nicht so dolle (im WebModule).
  Mit Zitat antworten Zitat
joehd

Registriert seit: 8. Okt 2008
Ort: Heidelberg
107 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#18

AW: Ich habe einen TCPServer als HTTP server und möchte daten aus einem POST JSON Da

  Alt 29. Dez 2022, 10:26
Danke für den Tipp da hatte ich auch schon probiert,
aber ich empfange nur komplette Datensätze aus einem Formular so hoffe ich Json und die werden dann abgelegt oder so komplett verarbeitet. Dann ist die Verbindung schon wieder vorbei.
joe
immer wenn ich was suche finde ich es hier komisch oder ?
Arbeite mit D3 D5 D2007 DXE Prof
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
737 Beiträge
 
#19

AW: Ich habe einen TCPServer als HTTP server und möchte daten aus einem POST JSON Da

  Alt 29. Dez 2022, 10:28
Sollte aber mit Obigem einfach umsetzbar sein.
  Mit Zitat antworten Zitat
joehd

Registriert seit: 8. Okt 2008
Ort: Heidelberg
107 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#20

AW: Ich habe einen TCPServer als HTTP server und möchte daten aus einem POST JSON Da

  Alt 30. Dez 2022, 14:06
Hallo !
also mein Projekt schreitet voran. Für das automatische aufbauen der Verbindung kann man den Parameter AutoStartSession nutzen. Dann wird der erste Kram erstmal erledigt.. so hoffe ich ...
Kann mir jemand sagen an was das liegt ?
Grüße
Joachim

Mein Formular liegt hier
https://__url__/Kontaktform.html

Delphi-Quellcode:
 form1.WebHttpRequest1.URL := 'http://___url___/kontakt/index.html'+'?'+ sendstring;
 form1.WebHttpRequest1.User := 'Webseite';
 form1.WebHttpRequest1.Password := 'nopassword';
 form1.WebHttpRequest1.Command := httpPost; // httpPUT; // httpPOST;
 // Form1.WebHttpRequest1.Headers.AddPair('Content-Type', 'application/x-www-form-urlencoded');
 // Form1.WebHttpRequest1.Headers.Add('Accept', 'application/json');
 Form1.WebHttpRequest1.Headers.AddPair('Content-Type', 'application/json');
 // Form1.WebHttpRequest1.Headers.Add('Access-Control-Allow-Origin','*');
 form1.WebHttpRequest1.PostData := ''; // sendstring;
 // form1.WebHttpRequest1.Execute;
 form1.WebHttpRequest1.Execute;
 Form1.Responsememo.Text := 'Fertig Ihre Anforderung wurde übertragen.'
Wenn ich nun das Formular bei mir Lokal mit dem TMS web, Server laufen lasse, dann kommt beim Kunden auch was an. Wen ich die Seite aber auf den Webserver Hochlade, dann sendet er nicht mehr und wird geblockt.

Meldung im Browser öffentlicher Web server
Laden von gemischten aktiven Inhalten "http://__url__/kontakt/index.html?&PNNAME=MusterFrau&PVNAME=Musterine&PGE BDAT=01.01.1900&PTEL=06221138890&PBEMERK=Termin%20 Kardiologie&PFREITEXT=Bitte%20beschreiben%20sie%20 n%C3%A4her,%20um%20was%20es%20geht!&VERSICHERT=KAS SE&PD1=Termin&PD2=&PD3=Kardiologie&Position=" wurde blockiert.
Kontaktform.js:1:453326

meldung im Browser Lokaler Webserver TMS web server
Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf http://__url__/kontakt/index.html?&P...usen&Position=. (Grund: CORS-Anfrage schlug fehl). Statuscode: (null).
joe
immer wenn ich was suche finde ich es hier komisch oder ?
Arbeite mit D3 D5 D2007 DXE Prof

Geändert von Daniel (10. Jan 2023 um 11:42 Uhr) Grund: URL auf Wunsch des Fragestellers entfernt.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:14 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