AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Datenübertragung via HTTP POST
Thema durchsuchen
Ansicht
Themen-Optionen

Datenübertragung via HTTP POST

Ein Thema von lucy · begonnen am 18. Nov 2022 · letzter Beitrag vom 22. Nov 2022
Antwort Antwort
Seite 1 von 3  1 23      
lucy

Registriert seit: 25. Okt 2017
67 Beiträge
 
Delphi XE7 Starter
 
#1

Datenübertragung via HTTP POST

  Alt 18. Nov 2022, 09:26
hier die Eckdaten:

Zugriff mit Datenformat : HTTP POST {IP}:{PORT}/rest/external/http

Daten:
UTF-8 kodiertes JSON als Body eines HTTP POST Aufrufs

Return-Werte:
Es werden die Standard-HTTP-Return-Codes verwendet. Außerdem wird ein JSON Objekt zurück geliefert.

HTTP Code Bedeutung:
200 Alarm erfolgreich übergeben
400 Der Aufruf war fehlerhaft

habe noch nicht mit der idHTTP Komponente gearbeitet
wie baue ich eine Verbindung zum Server auf?
wie bewkomme ich die Antwort vom Server "Request" ausgewertet?
brauch mal ein einfaches Beispiel um reinzukommen.

 idHTTP1.Post('{IP}:{PORT}/rest/external/http', // das wird wohl nicht reichen :-)
  Mit Zitat antworten Zitat
itblumi

Registriert seit: 28. Mär 2009
73 Beiträge
 
Delphi XE6 Professional
 
#2

AW: Datenübertragung via HTTP POST

  Alt 18. Nov 2022, 09:44
Hallo lucy,

ich denke du benutzt eine Rest Service und möchtest mit diesem kommunizieren. Diesen selbst zu erstellen mit Indy und anzusprechen würde auch gehen, aber ich denke es wäre für dich einfacher einer Rest Client zu erstellen.
Ich habe Dir dazu mal ein Beispiel von Embarcadero raus gesucht in dem dies gemacht wird.
https://docwiki.embarcadero.com/RADS...d_Web_Services

Vllt. hilft Dir dies ja schon weiter.

Viele Grüße
Jan
Jan
Ein neuer Tag bringt so einiges mit sich. Was auch immer es ist, es bleibt ein kleines Abenteuer.
  Mit Zitat antworten Zitat
omnibrain

Registriert seit: 11. Nov 2022
72 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Datenübertragung via HTTP POST

  Alt 18. Nov 2022, 10:14
Ich benutze TSslHttpRest von ICS. Den finde ich wesentlich komfortabler.
Hier ein Paar Snippets um dich auf den Weg zu bringen:

Code:
bodystring:='{"key":"value"}'
url:='https://example.com/api/v1/endpoint';
httpwork.RcvdStream := TStringStream.Create('',TEncoding.UTF8);
httpwork.RestRequest(httpPost,url,false,bodystring);
httpresultstring := httpwork.responseraw;
Das ganze dann noch in ein try/except packen.
httpresultstring kannst du dann dem Statuscode gemäß verarbeiten.
Code:
case httpwork.StatusCode of
  200: //verarbeiten
  400: //Fehler, aber vielleicht steht im Bodystring was dazu
else
  //alle anderen Fehler
end;
  Mit Zitat antworten Zitat
mjustin

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

AW: Datenübertragung via HTTP POST

  Alt 18. Nov 2022, 10:19
Ein Beispiel, wie mit Indy ein Json Dokument gesendet und die Antwort ausgegeben wird habe ich hier erstellt:

https://mikejustin.wordpress.com/201...-6-https-post/


Code:
Delphi-Quellcode:
program JSONPostExample;
 
{$APPTYPE CONSOLE}
 
uses
  IdHTTP, IdGlobal, SysUtils, Classes;
 
var
  HTTP: TIdHTTP;
  RequestBody: TStream;
  ResponseBody: string;
begin
  HTTP := TIdHTTP.Create;
  try
    try
      RequestBody := TStringStream.Create('{"日本語":42}',
        TEncoding.UTF8);
      try
        HTTP.Request.Accept := 'application/json';
        HTTP.Request.ContentType := 'application/json';
        ResponseBody := HTTP.Post('https://httpbin.org/post',
          RequestBody);
        WriteLn(ResponseBody);
        WriteLn(HTTP.ResponseText);
      finally
        RequestBody.Free;
      end;
    except
      on E: EIdHTTPProtocolException do
      begin
        WriteLn(E.Message);
        WriteLn(E.ErrorMessage);
      end;
      on E: Exception do
      begin
        WriteLn(E.Message);
      end;
    end;
  finally
    HTTP.Free;
  end;
  ReadLn;
  ReportMemoryLeaksOnShutdown := True;
end.
Michael Justin
  Mit Zitat antworten Zitat
lucy

Registriert seit: 25. Okt 2017
67 Beiträge
 
Delphi XE7 Starter
 
#5

AW: Datenübertragung via HTTP POST

  Alt 20. Nov 2022, 12:17
Zitat:
Ein Beispiel, wie mit Indy ein Json Dokument gesendet und die Antwort ausgegeben wird habe ich hier erstellt:

https://mikejustin.wordpress.com/201...-6-https-post/
vielen lieben Dank für Deine Hilfe

der Code sieht sehr komplex aus! kannst du mir was zu den einzelnen zeilen erzählen? möchte diesen Code auch verstehen.
deshalbt wollte ich erstmal nur mit einer "Verbindung" + "Request vom Server" anfangen.

danke
  Mit Zitat antworten Zitat
lucy

Registriert seit: 25. Okt 2017
67 Beiträge
 
Delphi XE7 Starter
 
#6

AW: Datenübertragung via HTTP POST

  Alt 21. Nov 2022, 09:56
suche noch ein einfaches Beispiel
dieser quellcode funktioniert so leider nicht.

hier die Beschreibung:
https://alamos-support.atlassian.net...+Schnittstelle

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  lParamList: TStringList;
begin
  lParamList := TStringList.Create;
  lParamList.Add('message:test message');
  lParamList.Add('type:TEST');
  lParamList.Add('sender:self');
  lParamList.Add('timestamp:1424950740000');
  try
    memo1.Lines.Text := idHTTP1.Post('http://192.168.0.5/rest/external/http', lParamList);
  finally
    lParamList.Free;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#7

AW: Datenübertragung via HTTP POST

  Alt 21. Nov 2022, 10:35
Und so?
Delphi-Quellcode:
lParamList := TStringList.Create;
  lParamList.Add('{');
  lParamList.Add('"message":"test message",');
  lParamList.Add('"type":"TEST",');
  lParamList.Add('"sender":"self",');
  lParamList.Add('"timestamp":"1424950740000"');
  lParamList.Add('}');
Wenn das geht, ist der Aufbau des JSON-Objekts schon einmal korrekt, aber das sollte man nicht so machen, sondern besser eine "richtige" Bibliothek dafür nehmen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
lucy

Registriert seit: 25. Okt 2017
67 Beiträge
 
Delphi XE7 Starter
 
#8

AW: Datenübertragung via HTTP POST

  Alt 21. Nov 2022, 10:52
Zitat:
und so?
geht nicht

Delphi-Quellcode:
var
  lParamList: TStringList;
begin
  lParamList := TStringList.Create;
  lParamList.Add('{');
  lParamList.Add('"message":"test message",');
  lParamList.Add('"type":"TEST",');
  lParamList.Add('"sender":"self",');
  lParamList.Add('"timestamp":"1424950740000"');
  lParamList.Add('}');
  try
Miniaturansicht angehängter Grafiken
bild1.jpg  

Geändert von lucy (21. Nov 2022 um 11:01 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#9

AW: Datenübertragung via HTTP POST

  Alt 21. Nov 2022, 12:32
Was steht denn in Zeile 66?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
lucy

Registriert seit: 25. Okt 2017
67 Beiträge
 
Delphi XE7 Starter
 
#10

AW: Datenübertragung via HTTP POST

  Alt 21. Nov 2022, 13:09
Zitat:
Was steht denn in Zeile 66?
Sorry, die Fehlermeldung gehört nicht zum Projekt

es kommt keine Fehlermeldung mehr! trotzdem ohne Funktion
Miniaturansicht angehängter Grafiken
bild1.jpg  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 20:29 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