![]() |
IdHTTP, probleme mit Post...
Das Thema gab es zwar schon mehrfach, jedoch ohne brauchbare Lösung...
Ich möchte Daten via HTTP-Post an eine PHP Seite senden
Delphi-Quellcode:
Die Daten kommen jedoch nicht am Ziel an, d.h. die Variablen sind leer...
procedure TForm1.BitBtn1Click(Sender: TObject);
var data: TIdMultiPartFormDataStream; begin data := TIdMultiPartFormDataStream.Create; try { add the used parameters for the script } data.AddFormField('Wert1', 'value1'); data.AddFormField('Wert2', 'value2'); data.AddFormField('Wert3', 'value3'); data.Position:=0; { Call the Post method of TIdHTTP and read the result into TMemo } Memo1.Lines.Text := IdHTTP1.Post('http://www.irgendeinedomain.net/upload.php', data); finally data.Free; end; end; upload.php
Code:
Mache ich das gleiche über eine HTML-Seite, klappt alles fehlerfrei:
<?PHP
echo $HTTP_POST_VARS["Wert1"]." "; echo $HTTP_POST_VARS["Wert2"]." "; echo $HTTP_POST_VARS["Wert3"]." "; ?>
Code:
<html>
<body> <form action="upload.php" method="POST"> <input type=text name="Wert1" value="value 1"> <input type=text name="Wert2" value="value 2"> <input type=text name="Wert3" value="value 3"> <input type=submit> </form> </html> |
Re: IdHTTP, probleme mit Post...
Weiss denn wirklich niemand, wie man einen richtigen POST-Request mit Indy hinbekommt??? :roll: :gruebel:
|
Re: IdHTTP, probleme mit Post...
wenn du im php-script einfach $Wert1 verwendest zeigst dann einen wert an???
|
Re: IdHTTP, probleme mit Post...
Nein, es wird auch dann nichts angezeigt! Wenn ich die Webseite (Beispiel) verwende, dann klappt es ja auch -> Das Script ist OK, Indy (oder ich) macht was falsch...
|
Re: IdHTTP, probleme mit Post...
also auf arbeit hab ich nen project rumliegen wo ich sowas auch mache, dort funktioniert auch, komm jetzt aber nicht ran. Wenn deine Felder nur Strings beinhalten benutze mal die idhttp.post variante wo du die parameter in einer Stinglist übergibst.
beispiel: parameter.add('wert= wert=value1'); vielleicht liegst an dem "data.position". Das hab ich bei mir so weit ich weiß nie verwendet und es hat trotzdem geklappt; |
Re: IdHTTP, probleme mit Post...
Das nützt mir nichts, da ich eigentlich auch noch eine Datei übertragen will. Durch diesen Test habe ich aber festgestellt, dass Indy noch nichtmal in der Lage ist einfache Textfelder zu übertragen...
|
Re: IdHTTP, probleme mit Post...
Hypothese: Wenn du das try finaly rausnimmst siehst du das nen fehler kommt. Ich nehm an du testest das ganze local und das ist intranet und somit brauchst du die BasicAuthentication da die indycomponente nicht wie der IEExplorer automatich das windowslogin sendet
|
Re: IdHTTP, probleme mit Post...
BasicAuthentication hin oder her, damit hat es nichts zu tun... :cyclops: Es gibt auch keinen Fehler, das Memo wird ja gefüllt
Code:
, nur sind eben die Variablen leer...Mal ganz davon abgesehen teste ich es nicht lokal, das Script und auch die Testseite liegen auf einem "echten" Webserver im Netz ;) |
Re: IdHTTP, probleme mit Post...
Delphi-Quellcode:
bei mir klappts. Oder hastn noch irgendwie nen sourceschnipsel mehr wo eventuell der Fehler drin ist??
var
data: TIdMultiPartFormDataStream; begin data := TIdMultiPartFormDataStream.Create; data.AddFormField('Wert1', 'value1'); data.AddFormField('Wert2', 'value2'); data.AddFormField('Wert3', 'value3'); idhttp1.Post('http://127.0.0.1/index.htm', data); data.free; |
Re: IdHTTP, probleme mit Post...
Zitat:
Mein Request geht ja auch "Fehlerfrei" raus, nur kommen die übergebenen Felder/Feldinhalte nicht an :wall: |
Re: IdHTTP, probleme mit Post...
weil ich beim server geguckt hab ob bei dem request die parameter mit kommen. außerdem kann man einen server auch so konfigurieren das er html mit dem php interpreter ausführt. (für lokale zwecke ganz sinnvoll). Habs aber auch mit nem perlscript probiert (da php grad ni geht) und da kommt auch was an
|
Re: IdHTTP, probleme mit Post...
Am Server kannst Du gucken was Du willst :cyclops: , lass Dir bitte mal den Rückgabewert anzeigen, dann siehst Du es :roll: ... Das PHP Script gibt Dir definitiv keine Parameter aus, obwohl es mit der Webseite klappt! :wall: :wall: :wall:
|
Re: IdHTTP, probleme mit Post...
könntest ja mal den kompletten source geben, den könnt ich ja dann ma testen bei mir, mit perlscript statt php am ende, kommt aber auf selbe raus.
|
Re: IdHTTP, probleme mit Post...
wenn die parameter beim server ankommen liegts nicht an der indy-componente, denn am server kommen die gleichen parameter an, egal ob mit webbrowser abgeschickt oder mit idhttpclient. Nur die Browserrequestsettings unterscheiden sich. Außerdem gehts ja mit perl supi. Oder haste an den Indycomponenten rumgefuscht oder die version10beta davon??? es liegt definitiev nicht an den componenten denn auf arbeit hab ichs auch mit php hinn bekommen auf die gleiche art und weise. irgendwo wirste noch nen fehler im source haben.
Du könntest auch mal die orginal http-addy posten (gegebenfals über private message) damit ichs mit dem phpscript testen kann |
Re: IdHTTP, probleme mit Post...
ICH HABE DEN KOMPLETTEN SOURCE GEPOSTET :evil: :evil: ... oder wie komplett hättest Du es denn gern?
Langsam habe ich Deine Antworten satt, DU KANNST ES NICHT GETESTET HABEN, WEIL ES NICHT FUNZT!!! :wall: :wall: :wall: P.S.: An den INDY's wurde nicht "rumgepfuscht", es ist der original Auslieferungszustand von Delphi7 pro |
Re: IdHTTP, probleme mit Post...
Ich habs inzwischen getestet, eben nur mit perl und nicht mit php aber das sollte dabei keine rolle spielen.
|
Re: IdHTTP, probleme mit Post...
Sieh Dir das erste Post an, dort ist der komplette Source der php-Seite... Ausserdem findest Du dort eine html-Seite, die genau dieses Script mit den gleichen Parametern aufruft wie Indy, nur über die Webseite (Browser) klappt es, mit INDY nicht...
Übrigens hab ich noch niemals und nirgends eine wirklich funktionierende POST-Funktion für INDY gefunden... ein "schöner" Test ist ein SMC700xBR Router, der schmiert nämlich komplett ab, wenn man einen Login über Post versucht, obwohl es mit einer Webseite (identische Paramter wie beim INDY Test) klappt. |
Re: IdHTTP, probleme mit Post...
wie schon erwähnt hab ich zurzeit keine möglichkeit php zu testen und für perl klappt das ganze. Deswegen wäre ich über eine url eines phpscripts dankbar welches die ihm übergebenen parameter anzeigt. Oder du wartest bis morgen. Da habsch den Source von unserem webshopeditor der alles über php-script konfiguriert.
|
Re: IdHTTP, probleme mit Post...
Die Frage ist nur, ob ihr das über POST gelöst habt... GET ist nämlich überhaupt kein Problem ;)
![]() ![]() |
Re: IdHTTP, probleme mit Post...
wir habens über post gelöst, ansonsten würde es nicht gehen die graphiken für den webshop hoch zu laden. naja, ich probiers mal mit deinem script
|
Re: IdHTTP, probleme mit Post...
mit idhttp1.post(url, stringliste) funktionierts. Guck morgen auf arbeit mal warum das mit der anderen Variante (TIdMultiPartFormDataStream) nicht funkioniert
|
Re: IdHTTP, probleme mit Post...
Zitat:
|
Re: IdHTTP, probleme mit Post...
wenn man in der unit:
idmultipartformdata.pas die zeile: sContentDisposition = 'Content-Disposition: form-data; name="%s"'; nach sContentDisposition = 'Content-Disposition: form-data; name="'; abändert funktionierts. Aber werd wie gesagt morgen mal gucken warums auf arbeit klappt, vielleicht ist ja da der fehler nicht in der unit. ==> Manchmal bringts halt doch was zu gucken was der am server ankommt und nicht nur was dann bei php rauskommt... |
Re: IdHTTP, probleme mit Post...
:oops: Entschuldigung für meine Aufregung vorhin, da hab ich mich wohl etwas zu früh aufgeregt...
Aber irgendwie ist es für mich nicht ganz nachvollziehbar, wie so ein grosser Bug sich in eine Final-Version einschleichen konnte. Mit diesem Bug ist ein POST ja praktisch nicht möglich :freak: Ich bin ja mal gespannt, wie die Unit bei Dir auf der Arbeit aussieht :? |
Re: IdHTTP, probleme mit Post...
Liste der Anhänge anzeigen (Anzahl: 3)
das ist komich, auf Arbeit sieht die unit genau so aus (also mit der vermeindlichen Bug-Zeile) wie zu Hause. Allerdings funktioniert dort der Source aus deinem ersten post in diesem thread der bei dir und bei mir zu Hause nicht funktioniert hat. Ich poste einfach mal die unit idmultipartformdata.pas und die IdHTTP.pas vielleicht gibts ja da zwischen den versionen irgend ein unterschied. Ich hab auch mal nen Post zum Server durchgeführt - und wunder - siehe da das post sieht genau so aus wie beim ie trotz der vermeindlichen bug-zeile. Kannst ja mal gucken ob es mit den units fehlerfrei funktioniert ansonsten bleibt wohl nur übrig die zeile zu ändern. Allerdings sendet der nen #13#10 dabei zu viel und obs mit atachment klappt weiß ich auch nicht. Also, weiter bug sucehn bleibt da nur übrig wenns mit den units nicht geht.
|
Re: IdHTTP, probleme mit Post...
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe dir ein kleines Spielprojekt angehängt.
Eventuell hilft es dir, dein POST Problem zu lösen .. Den Quellcode sende ich dir per PN, damit ich mir keinen Ärger mit dem "Mangenta-Logo-Konzern" einfange ... Schöne Grüße, Jens |
Re: IdHTTP, probleme mit Post...
![]() Mehrere Parameter kann man wie folgt verketten: ParamData .WriteString('search=' + Domain); ParamData .WriteString('&foo=' + 'foo'); ParamData .WriteString('&egal=' + 88 ); Die Parameter werden wie folgt übergeben: s:=IdHTTP.Post('http://www.iks-jena.de/cgi-bin/whois', ParamData); oder s:=IdHTTP.Post('http://www.iks-jena.de/cgi-bin/whois/weissnich.php?', ParamData); Schöne Grüße, Jens :hi: |
Re: IdHTTP, probleme mit Post...
ich habe es wie folgt gelöst:
das php programm:
Code:
der delphi teil:
<?php
var_dump($_REQUEST); ?>
Delphi-Quellcode:
var
daten: TIdMultiPartFormDataStream; begin daten:=TIdMultiPartFormDataStream.Create; try daten.AddFormField('testa', 'test1'); daten.AddFormField('testb', 'test2'); daten.AddFormField('testc', 'test3'); IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded'; Memo1.lines.text:=IdHTTP1.Post('http://localhost:3000/phpteil.php', daten); finally daten.free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 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-2025 by Thomas Breitkreuz