PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : post request mit php und Rückgabewert



smiler
06-08-2003, 16:13
Hallo Gemeinde,
mein erster Post hier, bitte etwas nachsichtig sein ;-)

Ich habe ein kleines Problem (logisch, sonst wuerde ich keine Frage stellen)

Ich versuche mittels eines PHP-Scriptes einen Post request durchzuführen.
Dieser Request geht an ein Servlet und dann sollte ich eigentlich einen bestimmten Wert zurückbekommen.
Das Script ist im Grossen und ganzen so aufgebaut, wie das im folgenden Link:

http://www.dclp-faq.de/q/q-code-post.html

Das Hinschicken der Daten funktioniert wunderbar. Leider brauche ich auch den Rückgabewert, aber der komt nicht zurück. Im Endeffekt erhalte ich nur den Server (identifikationsstring, und nicht mehr)->in der Variable $res

Wenn ich eine html-Seite baue, mit den entsprechenen Feldern, und diese an den Server schicke, dann bekomme ich auch einen Rueckgabewert.

Hat irgendeiner eine brauchbare Idee, woran das liegen koennte?

Wenn mehr infos benoetigt werden, liefere ich sie natuerlich gerne, soweit vorhanden.

beste Gruesse

Smiler

Gaert
06-08-2003, 16:40
Hallo!

Du bekommst natürlich die Headerdaten der Seite die du anforderst mirgeliefert (du hast das Serveridentifikationsstring oder so genannt).
Diese musst du abschneiden, genauso wie das letzte Zeichen (eine "0")

Im Normalfall solltest du sowas ähnliches zurückbekommen:


HTTP/1.1 200 OK
Date: Wed, 06 Aug 2003 15:36:21 GMT
Server: Apache/1.3.23 (Unix) PHP/4.2.1 AuthMySQL/2.20 mod_gzip/1.3.19.1a mod_fastcgi/2.2.10 FrontPage/5.0.2.2510 mod_perl/1.26
X-Powered-By: PHP/4.2.1
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html

1d6
hier steht dein Rückgabewert
0

smiler
06-08-2003, 16:54
Hi,
danke fuer die schnelle Antwort, aber leider ist der sind die Headerdaten scheinbar nicht ganz vollstaendig.

ich bekomme nur folgendes zurueck:
HTTP/1.0 202 Accepted Set-Cookie: JSESSIONID=6rwcxkq071;Path=/SalesWeb Date: Wed, 06 Aug 2003 15:50:39 GMT Server: Tomcat Web Server/3.3.1 Final ( JSP 1.1; Servlet 2.2 )
->und da ist schluss :-(

(irgendeine Idee?, wie gesagt, das script sieht dem oben verlinkten beispiel verblueffend aehnlich, wo kann da der Fehler liegen?)
wenn mein erwartetes Ergebnis da noch hinten dran gestanden haette, waere es ja gar nicht so schlecht gewesen, das haette ich schon irgendwie rausgekriegt, aber so...

Trotzdem Danke

Smiler

smiler
06-08-2003, 17:22
Hi,
Kommando zurueck.
Der Fehler lag wo ganz anders.
In den zu uebergebenden Parameters gab es ein wildes Durcheinander zwischen Gross-und Kleinschreibung, und die hatte ich nicht sorgfaeltig genug ins php-File uebernommen. Dieses wurde korrigiert, und nun geht es wunderbar.

Danke trotzdem an alle fuers Kopfzerbrechen.

Smiler

Gaert
06-08-2003, 17:25
Mal ne ganz doofe Frage:
Wie erzeugst du denn den Gegenwert auf der Rückgabeseite?
Und bist du dir sicher, dass er erzeugt wird?

smiler
06-08-2003, 17:54
hi,
ich erzeuge den Gegenwert nicht, das passiert bei der Firma, wo ich den Post request hinschicke.

Neudeutsch wuerde der ganze Spass wahrscheinlich unter "webservices" laufen, und solange ich auf der niedrigen Ebene der Postrequests bleibe, ist es auch gar nicht so komplizert.

Ich habe aber noch kein Programm geschrieben, wo die Antwort generiert wird und zurueckgeschickt, bisher konnte ich immer auf Services zugreifen.

So, das war nicht so hilfreich, sorry aber leider entdecke ich immer wieder Wissensdefizite bei mir, so auch jetzt ;-)

Smiler

Gaert
06-08-2003, 18:35
Ok - die Frage anders gestellt:
Was bekommst du denn zurück wenn du die Daten mit einem Formular abschickst?

smiler
07-08-2003, 12:03
Hi,
zusaetzlich zum header, denman halt "raussubstringen" muss, meistens einen Integer oder String. der dann laut Spezifikation eine bestimte Bedeutung hat.
Zum Beispiel habe ich auf diese Weise mal einen Bonitaetsservice programmiert, der hat die Bonitaet/Zahlungwilligkeit von Personen ermittelt (gut fuer shops, ob sie bestimmten Kunden Zahlung auf rechnung anbieten oder nicht), und da war der Rueckgabewert die Einstufung der jeweiligen Person in eine "zahlungswilligkeitsskala".

Sehr gut geht die ganze Sache mit curl, was aber nicht immer und ueberall installiert ist. Bei curl ist aus dem Rueckgabestring schon der header rausgeschnitten (bzw. das kann man konfigurieren) und man hat gleich die richtigen Daten zum Weiterverarbeiten.
Theoretisch kann man in den Rueckgabestring alles reinpacken, man muss es dann nur wieder auseinanderbauen. Wird es komplizierter, dann empfiehlt sich dann schon fast soap,. Da habe ich aber keine Erfahrung.
die folgende Artikel in der ix gibt einen kleinen Ueberblick ueber die Soapansteuerung von google:

http://www.heise.de/ix/artikel/2002/07/118/

Beste Gruesse

Smiler

Gaert
07-08-2003, 12:54
Du hast mich falsch verstanden...
Ich wollte nicht wissen, was technisch in deinem Rückgabewert codiert ist, sondern ob du etwas zurückbekommst, wenn du die Daten die du mit Post sendest ganz mormal mit einem Formular abschickst.
Kommt da was zurück oder nicht?
Was bekommst du wenn du die Daten testweise an irgendeine andere Seite schickst?

smiler
07-08-2003, 15:01
ups,
sorry, da habe ich wohl an dir vorbeigeredet.
Also bis jetzt war es bei mir so, dass ich in php nur ganz normale posts nachgebildet habe, also wenn ich ein html-Formular mit den gleichen Feldnamen und den entsprechenen Variablen erstellt habe, dann bekomme ich nach dem Submit den Rueckgabewert im ebenfalls im Browser angezeigt.
Im php file nimmt mein programm halt nur den Rueckgabewert mit fread() auf, um ihn weiterzuverarbeiten.
An eine andere Seite senden wuerde nichts bringen, da an der Gegenseite nur an der bestimmten Adresse das entsprechende Programm auf meine Eingabedaten wartet, um sie zu verarbeiten und die Antwort zurueckzusenden.

Smiler

Gaert
07-08-2003, 19:58
Original geschrieben von smiler
ups,
sorry, da habe ich wohl an dir vorbeigeredet.

und offensichtlich tust du´s immer noch ;)

Original geschrieben von smiler
Also bis jetzt war es bei mir so, dass ich in php nur ganz normale posts nachgebildet habe, also wenn ich ein html-Formular mit den gleichen Feldnamen und den entsprechenen Variablen erstellt habe, dann bekomme ich nach dem Submit den Rueckgabewert im ebenfalls im Browser angezeigt.

Ok.... daraus interpretiere ich jetzt mal, dass die JSP korrekt funktioniert und auf deine Eingaben reagiert.

Original geschrieben von smiler
Im php file nimmt mein programm halt nur den Rueckgabewert mit fread() auf, um ihn weiterzuverarbeiten.

Das ist mir Klar!

Original geschrieben von smiler
An eine andere Seite senden wuerde nichts bringen, da an der Gegenseite nur an der bestimmten Adresse das entsprechende Programm auf meine Eingabedaten wartet, um sie zu verarbeiten und die Antwort zurueckzusenden.

An eine andere Seite würde sehr wohl etwas bringen, denn du müsstest eigentlich (unabhängig ob da etwas auf deine Daten wartet) die Rückgabe die angesprochene Seite als Rückgabe Wert vom Server erhalten.
Solltest du da wieder nichts ausser ein paar Header Daten bekommen, dann liegt der Fehler eindeutig an deinem PHP Skript.

smiler
08-08-2003, 07:26
hm...

ich glaube wir haben irgendwann in diesem Thread die gemeinsame Gespraechsbasis verlassen ;-))

Auf die Gefahr hin, mich jetzt voellig laecherlich zu machen weise ich nochmal darauf hin, dass mein Prolem schon geloest ist, siehe ein paar posts weiter oben.

Das aerglerliche an dem Webservice, den ich dort ansprechen wollte(und jetzt auch tue) war eben, dass er bei fehlerhafter Datenuebermittllung _keine_ Fehlermeldung gebracht hatte ("wrong data" oder so etwas) sondern sich einfach tot gestellt hatte. Somit konnte ich nur raten, woran der Fehler lag.
Letztendlich waren es die case sensitiven Varieblen, die mich zum Stolpern gebracht hatten, Alle Variablen, bis auf eine mussten gross geschrieben werden, und eine halt klein. Das habe ich dann im original HTML Beispielpostformuler rausgefunden. (wobei ich zu meiner Verteidigung sagen muss, dass ich das html file erst spaeter auf Nachfrage bekommen habe, und somit erstmal ins offene Messer bezueglich fehlerhafter Variablen reingerannt bin.

Das was an meinem PHP-File falsch war, das war mir schon klar. Ich wusste halt nur nicht, ob es an dem implementierten Post-Prozess lag, oder an falsch geschriebenen Variablen, oder am falsch eingebauten fread() meinerseits.
Aber das Problem hat sich gluecklicherweise geloest.

So, haben wir gespraechstechnisch wieder zusammengefunden? ;-))

Beste Gruesse

Smiler

Gaert
08-08-2003, 21:41
Original geschrieben von smiler

So, haben wir gespraechstechnisch wieder zusammengefunden? ;-))


Denke schon :D !