Post param einer website bekommen
lima-city → Forum → Programmiersprachen → Java
anfrage
antwort
code
datum
einfachsten code
ersetzen
fragezeichen
http
idee
import
parameter
post
programm
schnelle antwort
senden
server
string
url
wissen
zahl
-
Hey,
ich bekomme über eine beliebige Website (z.B. 127.0.0.1/?code=<CODE>) einen code.
Diesen muss ich dann in meinem Programm verwenden. Hat jemand einen Plan wie ich das anstellen könnte?
Lokalen Server starten mit einem Port und dann warten? Wenn ja, gibt's einfache Frameworks?
Mehr Ideen hatte ich noch nicht... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo.
Erstmal musst du wissen, welche Parameter du meinst. Parameter, die mit Fragezeichen an die Url angehängt werden, sind GET-Parameter. POST-Parameter werden hauptsächlich beim Abschicken von Formularen gesendet.
Hier mal ein kurzes Beispiel zu den Get-Parametern
Was du ausgegeben bekommst, ist die erste Zeile der Anfrage.import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; public class Webserver { public static void main(String[] args) throws IOException { ServerSocket server=new ServerSocket(80); Socket client=server.accept(); InputStream in=client.getInputStream(); BufferedReader lesen=new BufferedReader(new InputStreamReader(in)); System.out.println(lesen.readLine()); } }
Details stehen auch in Wikipedia
Letztendlich solltest du die Anfrage noch beantworten und evtl. ein paralleles Programm schreiben, um auch mehrere Anfragen gleichzeitig auszuwerten.
Das mal so ganz grob. Wenn du noch etwas detailliert wissen möchtest, schreib einfach zurück. -
Hey fuerderer,
also die Seiten bekomme ich mittlerweile. Nur komischerweise wird weder POST noch GET verwendet (wie in der Doc beschrieben) sondern die URL sieht so aus: http://127.0.0.1:5000/#access_token=50r4d
Mein GET liefert mir damit leider nur /
Edit:
Eigentlich ist mir egal, was das Teil zurückliefert... Benötige nur den Link :)
Beitrag zuletzt geändert: 24.7.2014 15:24:01 von portal715 -
Jetzt sieht dein Link aber anders aus, als vorher
portal715 schrieb:
Da muss ich dich leider enttäuschen. Alles nach dem # wird vom Browser zunächst ignoriert, das heißt der Server (dein Java-Programm) bekommt nur http://127.0.0.1:5000/
http://127.0.0.1:5000/#access_token=50r4d
Anmerkung: Du siehst nur ein /. Alles davor kann sich der Server aber denken.
Woher kommt denn die Adresse, kann man vielleicht das '#' entfernen oder durch ein Fragezeichen ersetzen?
Eine andere Idee wäre, ein Javascript auszuliefern, das versucht, die Infos nach dem # abzufragen und anschließend die Daten nochmal nachschickt. Aber das wäre dann unsauber umgesetzt. -
Ja das kam auch für mich etwas unerwartet...
[quote]
If the user authorizes your application, they will be redirected to the following URL:
https://[your registered redirect URI]/?code=[CODE]
[/quote]
siehe [url=https://github.com/justintv/Twitch-API/blob/master/authentication.md#auth-code]hier[/url]
hmm.. muss ich wohl noch ein wenig herumsuchen.
Wie bekomme ich eine schnelle Antwort hin? Also einfach nur "Success" oder so...
Edit:
Arr fuck :D ... Hatte token anstelle von code als response eingestellt *facepalm*
Beitrag zuletzt geändert: 24.7.2014 15:49:40 von portal715 -
portal715 schrieb:
Du meinst eine HTTP-Antwort?
Wie bekomme ich eine schnelle Antwort hin? Also einfach nur "Success" oder so...
Innerhalb von Java muss du zuerst einmal noch den "OutputStream" laden.
Dann kannst du mitOutputStream out=client.getOutputStream(); PrintWriter schreiben=new PrintWriter(out);
oderschreiben.print("");
Text senden.schreiben.println("");
Am einfachsten:
Das bedeutet laut Wikipedia: "Die Anfrage wurde erfolgreich durchgeführt, die Antwort enthält jedoch bewusst keine Daten." Wichtig sind noch zwei Zeilenumbrüche, also eine Leerzeile am Ende.HTTP/1.1 204 No Content
Du kannst aber auch HTML ausliefern:
Wenn du das HTML veränderst, musst du auch die Zahl bei Content-Length anpassen. Immer die Anzahl an Bytes.HTTP/1.1 200 OK Content-Length: 13 <html></html>
(Hab dein Edit noch gesehen, trotzdem könnte meine Erklärung noch weiterhelfen
-> Veröffentlichen) -
Okay ich habs mir jetzt so geschrieben:
public void sendResponse(boolean success) throws Exception { PrintWriter schreiben=new PrintWriter(outToClient); String content; if(success) content = "<html><body>Success</body></html>"; else content = "<html><body>Failure</body></html>"; schreiben.print("HTTP/1.1 200 OK\r\n"+ "Content-Length: "+content.length()+"\r\n"+ content+"\r\n"); }
Leider lädt er mir nichts... -
Zwei Dinge hab ich an deiner Funktion verändert, jetzt funktioniert sie bei mir.
1. Du brauchst zwei Zeilenumbrüche (=eine Leerzeile) zwischen Header und Content:
schreiben.print("HTTP/1.1 200 OK\r\n"+ "Content-Length: "+content.length()+"\r\n\r\n"+ content+"\r\n");
2. Danach noch ein Flush, um alles sicher zu senden:
schreiben.flush();
Viel Glück -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage