AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke PHPArray über Indy HTTP Post übergeben?
Thema durchsuchen
Ansicht
Themen-Optionen

PHPArray über Indy HTTP Post übergeben?

Ein Thema von Koloss · begonnen am 27. Dez 2019 · letzter Beitrag vom 8. Jan 2020
Antwort Antwort
Koloss

Registriert seit: 21. Jul 2010
74 Beiträge
 
Delphi 2 Desktop
 
#1

PHPArray über Indy HTTP Post übergeben?

  Alt 27. Dez 2019, 22:55
Wie übergebe ich ein doppeltes Array(PHPArray) über HTTP mit Delphi?

PHPCode:
Code:
  $variable = array(
  array(
    "Test1",
    "Test2"
  ),
  array(
    "Test3",
    "Test4"
  ),
  array(
    "Test5",
    "Test6"
  )
);
Mein Delphi Code:
Code:
procedure PostHTTP;
var
  ParamList: TStringList;
begin
  ParamList := TStringList.Create;
  ParamList.Add('Param1=???'); // dort gehört das doppelte PHPArray rein
  IdHTTP.Post('http://www.abc.com/api.php', ParamList));
  ParamList.Free;
end;
Verwende Delphi XE10

Geändert von Koloss (27. Dez 2019 um 22:58 Uhr)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.108 Beiträge
 
Delphi 2009 Professional
 
#2

AW: PHPArray über Indy HTTP Post übergeben?

  Alt 27. Dez 2019, 23:12
Das hat an sich überhaupt nichts mit Delphi zu tun. HTTP bzw. PHP stellt sich schon bei eindimensionalen Arrays sehr seltsam an (Parameter müssen auf [] enden) und für zweidimensionale dürfte kein Standard in HTTP existieren (somit ist das auch keine Frage zu PHP). Ich würde daher vermuten, dass du dir dein eigenes Format überlegen musst, das du in Delphi zusammensetzen und in PHP parsen musst. Entweder ein einzelner Parameter (z.B. CSV als Payload) oder eindimensionale Array-Parameter mit einer Kommaliste je Wert oder so. Escaping nicht vergessen.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Koloss

Registriert seit: 21. Jul 2010
74 Beiträge
 
Delphi 2 Desktop
 
#3

AW: PHPArray über Indy HTTP Post übergeben?

  Alt 27. Dez 2019, 23:14
PHP gegenstelle ist eine API, ich bin da nur der Client!

Ich habe oben nur gezeigt wie es unter PHP aussieht, nur wie setze ich das eben in Delphi um?

Geändert von Koloss (27. Dez 2019 um 23:17 Uhr)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.108 Beiträge
 
Delphi 2009 Professional
 
#4

AW: PHPArray über Indy HTTP Post übergeben?

  Alt 27. Dez 2019, 23:31
Wenn man das hier auf mehrere Dimensionen erweitert, könnte es klappen. Für dein Beispiel wäre dies:
Code:
variable[0][]=Test1&variable[0][]=Test2&variable[1][]=Test3&variable[1][]=Test4&variable[2][]=Test5&variable[2][]=Test6
oder
Code:
variable[0][0]=Test1&variable[0][1]=Test2&variable[1][0]=Test3&variable[1][1]=Test4&variable[2][0]=Test5&variable[2][1]=Test6
Du kannst auch PHP selbst fragen: http_build_query, dann sagt dir PHP, wie das aussehen muss, wenn man das nativ macht ($_POST['variable'] ist dein Array). Das könnte/sollte/müsste der zweite Code sein, der erste würde vielleicht auch gehen, dann übernähme PHP das Zuweisen von Indizes in den inneren Arrays. Wenn die API jetzt natürlich CSV- oder JSON-Payload erwartet, wäre das blöd. Dann hülfe nur ein Mitschnitt der Kommikation.

Wie gesagt, hat mit Delphi absolut gar nichts zu tun.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Koloss

Registriert seit: 21. Jul 2010
74 Beiträge
 
Delphi 2 Desktop
 
#5

AW: PHPArray über Indy HTTP Post übergeben?

  Alt 28. Dez 2019, 15:24
Danke @Redeemer!

Du hast mich auf die Löasung gebracht! Eigentlich eh ganze easy.

Code:
procedure PostHTTP;
var
  ParamList: TStringList;
begin
  ParamList := TStringList.Create;
  ParamList.Add('Param1[0][0]=bla');
  ParamList.Add('Param1[1][0]=blabla');
  // usw.
  IdHTTP.Post('http://www.abc.com/api.php', ParamList));
  ParamList.Free;
end;
Das mit & ging nicht, denke das wird nur über querys in der url via GET funktionieren.
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.108 Beiträge
 
Delphi 2009 Professional
 
#6

AW: PHPArray über Indy HTTP Post übergeben?

  Alt 28. Dez 2019, 18:29
Indy escapet das wohl einfach, wenn du mehrere Parameter in einen reinpackst. Sprich & wird zu %26.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Antwort Antwort


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:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz