| 

.NET C# Java Javascript Exception

1
Auf eine Chatseite wird beim Versenden einer Nachricht ein "token=" erwartet. (Beim request)
Wie ermittel ich diesen?
Er ist immer anderst, bei jeder Nachricht. : )


Die PostDaten enthalten den "token=":

"recipient=USERNAMEvomEmpfänger&recipientid=0&token=NoGw9Snk&subject=..." (Rest unwichtig)


Grüße
News:
06.04.2011
ZebRa 211 7
5 Antworten
1
Ohne genaueres Wissen über die Seite werden wir hier dir nur "vermutungen" sagen können.

Wenn du für diesen Chat dich einloggen musst dann verwende folgende Reihenfolge:

- Login auf der Seite -> Cookie Auslesen (SESSIONID)
- Request der "Chat Seite" + Session bei Request übergeben -> TOKEN AUSLESEN
- Request schicken SESSION + Token


da ich denke, wenn ich den Token hab und den Request mach, dass es schon ein neuen gibt.


Halte ich für unwarscheinlich.

Wir brauchen infos über die eigentliche Chat Seite.


// EDIT
Nach einem längeren und freundlichen Chatgespräch, haben wir festgestellt das es am Server der Chat seite liegt.

Dieser Übermittelt fälschlicherweise im return Header 2 Session ID's, bei richtiger Session ID die möglichen abfragen durchgenommen und funktioniert.
07.04.2011
Marco Rieger 820 7
Des hab ich ja schon alles.
Bin eingeloggt.
Nur um Nachrichten zu senden, brauch ich den token.
Der bei jedem Seitenaufruf neu generiert wird, also muss ich theoretisch per Request den Response von dem Nachrichtenfenster abfangen, den token auslesen und per request übergeben.
Das habe ich gemacht, wie man am Code oben erkennen kann. (http://ideone.com/kMRRx)

Aber es geht nicht, da ich vermute, dass es dann bei dem 2ten Request schon wieder ein neuer Token generiert wurde und der wird erwartet.
ZebRa 07.04.2011
Bei der Chatseite öffnet man ein PopupFenster, da gibt man seine Nachricht ein und drückt auf senden.
PopupFenster enthält den Token den ich beim Absenden übergeben muss.
ZebRa 07.04.2011
Erklär mir kurz bitte was genau du vorhast, bzw mit welcher Sprache du arbeitest. Ich sehe oben csharp aber anscheinend wird dieses eine WebApplication...also CSharp + Web = asp.net
aber auf deiner Seite entdecke ich PHP.
Bitte nur kurz den ablauf deiner Application beschreiben.
Marco Rieger 07.04.2011
URL vom Chatfenster (Popup) mit Token:
http://m.team-ulm.de/NeueNachricht/


URL für den Request um die Nachricht zu versenden:
http://m.team-ulm.de/SendeNachricht/

Postdaten für den Request:
"recipient=NachrichtAnUser&recipientid=UserID&token=XXX"
ZebRa 07.04.2011
Anwendung:
Einloggen (Per Request auf einer Webseite)
Response von LoginRequest auswerten, ob das einloggen erfolgreich war.
TextBox = Nachricht eintippen
TextBox = Username eintippen
Button = Nachricht senden

Soll ein Messenger für eine Seite werden, auf der man Nachrichten verschicken kann.
ZebRa 07.04.2011
Ach genau: C# und nein kein PHP.
ZebRa 07.04.2011
recipient=NachrichtAnUser&recipientid=UserID&token=XXX
Marco Rieger 07.04.2011
1
Kannst du die Seite mal posten, wo du den Request hinschickst. Würde selbst gerne mal Testen und drübergucken.

Vom Ablauf machst du alles richtig.
Entweder posten oder bitte mail an ins0faint@googlemail.com
Marco Rieger 07.04.2011
Hast eine Email.
ZebRa 07.04.2011
1
Also wenn du wieder von "http://www.team-ulm.de/" redest, da find ich keinen Chat.

Du wirst die Tokens jedes mal aus dem ResponseStream auslesen müssen. Such im Quellcode der Seite mal nach:

<input type="hidden" name="token" value="...">

Denk daran das die Reihefolge der Attribute abweichend sein kann.

Wenn der Post-Request mittels Ajax zusammengebaut wird, musst du dir das JavaScript-File mal gründlich betrachten um herrauszubekommen wo der Token steht.

Nachtrag:

Nachdem ich mir die Kommentare durchgelesen habe hier die Umsetzungsregularien:

1. Du musst den Token jedes nach JEDEM Seitenwechsel oder Request aus dem ResponseStream auslesen
2. Du musst den ausgelesen Token bei jedem Request als Post-Parameter mitschicken

Bezugnehmend auf ein Beispiel unter http://ideone.com/kMRRx muss das ganze dann so aussehen:

if(postdata.length > 0)
postdata += "&";
postdata += "token=" + token + "&subject=TEST&message=" + message + "&send=Nachricht+senden";


Alternative können wir uns auch mal im Skype zusammensetzten.
07.04.2011
Floyd 11,0k 3 9
Floyd 11,0k 3 9
Da muss man sich anmelden, wenn man Nachrichten senden will. : )

Okay danke. Habs schon gefunden:

<input name="token" type="hidden" id="token" value="JleRiir7" />

Jetzt mit Regex rausfiltern und übergeben? : )
ZebRa 07.04.2011
Jetzt hab ich das Problem, dass der Token bei jedem Aufruf neu generiert wird. Der Token steht im HTML-Quelltext, den hab ich erfolgreich herausgefiltert (getestet) aber die Nachricht kommt nicht an, da ich denke, wenn ich den Token hab und den Request mach, dass es schon ein neuen gibt.

URL von der ich den token auslese:
http://m.team-ulm.de/NeueNachricht/
URL für den Request:
http://m.team-ulm.de/SendeNachricht/

Hier mal mein Code: http://ideone.com/kMRRx
ZebRa 07.04.2011
Da ist sogar bei jedem "Rechtsklick -> Seitenquelltext anzeigen" ein neuer Token da. o.O
ZebRa 07.04.2011
Hab jetzt auf anderen Seiten auch nach dem Token geschaut, anscheinend ist das bei jeder Seite so. ^^
Wahrscheinlich muss ich das alles in einer session machen? Aber wie... : )
ZebRa 07.04.2011
1
Bei Rechtsklick seite anzeigen wird deswegen ein neuer Token errechnet weil das anzeigen des Quelltextes ein neuen Seitenaufbau erzwingt quasi wie "F5" Seiten Reload.
Marco Rieger 07.04.2011
1
Hast du Skype? Könnt dir anbieten das wir z.B. heute Abend das ganze uns gemeinsam anschauen und durchgehen.
Floyd 07.04.2011
Gerne = )
Wie heißt du in Skype?
ZebRa 07.04.2011
0
- doppel post -
07.04.2011
Marco Rieger 820 7
0
Weis nicht noch einer, wie man den Token übergeben kann? Den Aktuellen. Wie oben beschrieben?
Währe nett, weil das brauch ich bestimmt öfters...
07.04.2011
ZebRa 211 7
1
Hab meinen Beitrag angepasst!
Floyd 07.04.2011
0
@ Floyd:

Mein SkypeName: [Entfernt]
07.04.2011
ZebRa 211 7
also ich bin online :D
Floyd 07.04.2011

Stelle deine .net-Frage jetzt!