HTTP Requests verarbeiten und Response senden mit Java

Status
Nicht offen für weitere Antworten.
M

Marcus1

Gast
Hallo Ihr,

bevor ich mich an die Arbeit mache wäre es schön wenn ein paar Leute hier ihre Meinung zu folgedem Projekt abgeben würden:

Ich brauche ein Java Programm, dass HTTP Requests (also Anfragen, die von einem Browser kommen) entgegennimmt und die übergebenen Parameter ausliest. Entsprechend der übergebenen Parameter soll dann eine Response erzeugt werden und an den Browser zurückgesandt werden.

Was denkt ihr wie aufwändig ist das? Es soll kein voll funktionsfähiger Webserver sein, sondern nur die oben genannte Funktionalität haben.

Bye
Marcus
 
G

Guest

Gast
Hier mal ein Echo an Browser. Fehlerbehandlung, Multithreading, Requestheader-Auswertung etc. kannst du mal selber machen.
Das Ermitteln vom Ende des Request-Headers ist hier auch nur provisorisch implementiert.
Code:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class HttpEcho
{
   public static void main(String[] args) throws Exception
   {
      ServerSocket serverSocket = null;
      try
      {
         serverSocket = new ServerSocket(88);
         for (;;)
         {
            Socket client = serverSocket.accept();

// Dieser Part hier gehört in einen vernünftigen RequestHandler (im getrennten Thread) mit Fehlerbehandlung 
// und sonstigen coolen Features

            BufferedInputStream in = new BufferedInputStream(client.getInputStream());
            ByteArrayOutputStream buffer = new ByteArrayOutputStream(); 
            int nlc = 0, c;
            while(nlc<4 && (c=in.read())!=-1 ) 
            {
               nlc = ("\n\r".indexOf(c)>=0)? nlc+1:0;
               buffer.write(c);
            }
            BufferedOutputStream out = new BufferedOutputStream(client.getOutputStream());
            out.write("HTTP/1.1 200 OK\n\n".getBytes());
            out.write(buffer.toByteArray());
            out.flush();
            client.close();
// ------
         }
      }
      finally
      {
         if (serverSocket != null)
         {
            serverSocket.close();
         }
      }
   }
}
 
M

Marcus1

Gast
@kleiner_held: Im Moment ist es als Servlet/JSP realisiert aber ich möchte mir den Applicationserver sparen, da der für meine Zwecke totaler Overkill ist.

@Gast: Danke für deinen Code!
 
M

Marcus1

Gast
Gibts vielleicht eine Library die den Umgang mit HTTP vereinfacht außer natürlich den standard Java Libraries ?
 
M

Marcus1

Gast
Ist HTTPClient nicht eher für einen Client gedacht? Zumindest der Name legt sowas nahe...
 
M

Marcus1

Gast
AlArenal hat gesagt.:
Ist ein Client nicht 50% einer Client-Server-Lösung?
Klar, aber ich hab im ersten Posting geschrieben dass ich die Serverseite brauche. Der Client soll ein Browser sein.
 

AlArenal

Top Contributor
Jigsaw?

Ansonsten ist ein einfacher HTTP-Server relativ einfach zu bauen. Schnapp dir ein Tutorial zur Netzwerkprogrammierung, lass das Teil auf Port 80 lauschen und der Rest ist eben Anfragen parsen und daraus Aktionen ableiten.

Du fängst mit GET an und sollte das Ding noch mehr können müssen, erweiterst du sukzessive.

http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol
http://tools.ietf.org/html/rfc2616

Lustig übrigens, dass der Link im Wikipedia-Artikel zur Uni Frankfurt auf "Osama's Homepage" führt :D
 

Wildcard

Top Contributor
AlArenal hat gesagt.:
Ansonsten ist ein einfacher HTTP-Server relativ einfach zu bauen. Schnapp dir ein Tutorial zur Netzwerkprogrammierung, lass das Teil auf Port 80 lauschen und der Rest ist eben Anfragen parsen und daraus Aktionen ableiten.
Da würde ich eher einen Jetty nehmen. Wer will das denn selbst schreiben?
http://jetty.mortbay.org/
 

AlArenal

Top Contributor
Wildcard hat gesagt.:
AlArenal hat gesagt.:
Ansonsten ist ein einfacher HTTP-Server relativ einfach zu bauen. Schnapp dir ein Tutorial zur Netzwerkprogrammierung, lass das Teil auf Port 80 lauschen und der Rest ist eben Anfragen parsen und daraus Aktionen ableiten.
Da würde ich eher einen Jetty nehmen. Wer will das denn selbst schreiben?
http://jetty.mortbay.org/

Auf Jigsaw hatte ich ja auch schon hingeweisen. Ich weiß ja nicht ob er nur was braucht was funktioniert, oder ob er es halbwegs selbst schreiben muss. Der Autor war ja etwas erklärungsgeizig. ;)
 
G

Gast

Gast
hi, sowas in der art mache ich auch. bloss dass ich dies mit einem webservice versuche, da der service später evtl noch ausgebaut werden soll.
jedoch verstehe ich noch nicht, wie ich dem client im browser daten zukommen lassen kann.
wäre für jegliche hilfe sehr dankbar!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M HTTP Http requests aufzeichnen Netzwerkprogrammierung 2
D HTTP nochne frage zu http requests Netzwerkprogrammierung 6
D HTTP Bräuchte hilfe mit Http Requests Netzwerkprogrammierung 6
F http Post auf einen Grafana Server Netzwerkprogrammierung 3
H Datei mit Anhang via http "hochladen" Netzwerkprogrammierung 16
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
R Anfängerbeispiel: Suche Java-Anwendung die http-Anfragen in Tomcat liest Netzwerkprogrammierung 8
O HTTP Wer hilft mit meinem UTF-8 http Request ? Netzwerkprogrammierung 1
G localhost im Backend https vs. http Netzwerkprogrammierung 9
J Simple HTTP Framework (basierend auf expressjs) Netzwerkprogrammierung 1
J HTTP [Java 9] Neuer HTTP Client - Tutorial Netzwerkprogrammierung 3
J HTTP Befehl via HTTP senden ohne Browser öffnen Netzwerkprogrammierung 3
F HTTP HTTP Rest Client mit TLS1.2 und selbst signiertem Zertifikat Netzwerkprogrammierung 2
M http request and response Netzwerkprogrammierung 0
M Verbindungszeit berechnen (TCP, HTTP/1.0, HTTP/1.1) Netzwerkprogrammierung 2
P HTTP Bild von einem Server per http kopieren Netzwerkprogrammierung 1
U HTTP XML vom Server abholen oder http Abfragen, Entscheidung treffen Netzwerkprogrammierung 0
P HTTP Server / Client Netzwerkprogrammierung 1
S HTTP-Requeste von Browser mit Java sniffen? Netzwerkprogrammierung 9
E HTTP java.lang.IllegalArgumentException: protocol = http host = null Netzwerkprogrammierung 1
M Server mit HTTP Netzwerkprogrammierung 9
H Sockets oder HTTP- Methoden? Netzwerkprogrammierung 3
B Socket HTTP-Request führt zu Endlosschleife Netzwerkprogrammierung 5
K HTTP Eigener Http Response für Datei-Download Netzwerkprogrammierung 4
D Server Client Verbindung - Unexpected End of File - Invalid HTTP Response Netzwerkprogrammierung 4
F HTTP HTTP-Download: Dateien in einem Verzeichnis ermitteln Netzwerkprogrammierung 8
T HTTP Einen HTTP Server erstellen Netzwerkprogrammierung 20
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
Dit_ HTTP Einfache HTTP-Anfrage Netzwerkprogrammierung 6
nrg FileUpload HTTP POST Netzwerkprogrammierung 5
T Socket Java HTTP-Proxy Netzwerkprogrammierung 3
A HTTP Zugriff auf http-Server - Error 400 Netzwerkprogrammierung 11
B HTTP JSESSIONID in Http(s)URLConnection loswerden! Netzwerkprogrammierung 13
E Socket HTTP-Server Netzwerkprogrammierung 6
C HTTP POST Connect Netzwerkprogrammierung 9
D HTTP Java HTTP Kommunikation Netzwerkprogrammierung 9
R HTTP Apache HTTP Client: Request mit angehängter Datei Netzwerkprogrammierung 2
O Http request Netzwerkprogrammierung 7
Tobse HTTP ServerSocket HTTP Netzwerkprogrammierung 4
I HTTP Datei Uploaden mit http und Sprache anpassen Netzwerkprogrammierung 7
I Socket HTTP Nachrichten über Sockets verschicken Netzwerkprogrammierung 2
N Http Client Netzwerkprogrammierung 3
W Asynchroner HTTP Client / non-blocking I/O Netzwerkprogrammierung 2
R HTTP Problem bei Authentifizierung über (Http)UrlConnection Netzwerkprogrammierung 2
L Body eines http Request auslesen Netzwerkprogrammierung 2
T HTTP Encoding von Http-Streams Netzwerkprogrammierung 2
K Ende eines HTTP Response/Request Netzwerkprogrammierung 6
D http request Netzwerkprogrammierung 11
C HTTP Studienarbeit Kommunikation via HTTP mit POST zwischen Server und Client Netzwerkprogrammierung 7
Kr0e Simpler HTTP Stream server Test Netzwerkprogrammierung 3
K HTTP-Anfrage an einen Server wird nicht beantwortet Netzwerkprogrammierung 3
J org.apache.http.auth.NTCredentials Netzwerkprogrammierung 2
W Problem mit HTTP-Dateiübertragung Netzwerkprogrammierung 6
A org.apache.commons http client in Netbeans einbinden Netzwerkprogrammierung 3
G Http Client mit Redirect Enabled Netzwerkprogrammierung 2
M Http POST liefert kryptischen Content Netzwerkprogrammierung 4
G Sockets und HTTP: Ende des Datenempfangs erkennen Netzwerkprogrammierung 3
B Wie HTTP GET/POST Anfrage versenden? Netzwerkprogrammierung 7
R HTTP Server Memory Leak? Netzwerkprogrammierung 6
G HTTP-Request InputStream-Problem Netzwerkprogrammierung 5
K optimale HTTP Downloads Netzwerkprogrammierung 15
G auf http-request antworten. Netzwerkprogrammierung 3
I http sniffer gesucht Netzwerkprogrammierung 10
G Socket + HTTP Header Netzwerkprogrammierung 2
R HTTP ServerThread Netzwerkprogrammierung 4
J HTTP GET? Netzwerkprogrammierung 6
C FTP vs HTTP Netzwerkprogrammierung 10
M HTTP-Response extrem fragmentiert Netzwerkprogrammierung 4
W HTTP-Upload Netzwerkprogrammierung 2
M HTTP response code: 401 ; ?aber im browser ist es abrufbar? Netzwerkprogrammierung 5
L Java HTTP Request Netzwerkprogrammierung 3
O Axis2 erstellt HTTP/1.1 anstatt HTTP/1.0 Netzwerkprogrammierung 3
B Fehler 401 bei http GET Netzwerkprogrammierung 2
S HTTP Request erstellen Netzwerkprogrammierung 2
E upload progress bei einem http file post Netzwerkprogrammierung 5
B lange Strings in http-Request? Netzwerkprogrammierung 3
K http-download Netzwerkprogrammierung 12
M erst POST dann Http-Request über URLConnection Netzwerkprogrammierung 3
I Apache http-client: Problem beim Proxyaufruf Netzwerkprogrammierung 2
m@nu Ende von Stream bei HTTP-Request Netzwerkprogrammierung 3
M RMI over HTTP Netzwerkprogrammierung 5
G HTTP Response mit Transfer-Encoding:chunked einlesen Netzwerkprogrammierung 4
D HTTP Request erstellen (Form Name übergeben!) Netzwerkprogrammierung 3
J Java Programm für Upload von Dateien per HTTP Netzwerkprogrammierung 7
L http kommunikation mit und ohne multipart Netzwerkprogrammierung 4
L file upload / download über http Netzwerkprogrammierung 5
G HTTP Client :: Komme nicht über den Proxy Netzwerkprogrammierung 7
P Easy Http Request Netzwerkprogrammierung 9
B non US-ASCII Dateinamen über HTTP? Netzwerkprogrammierung 2
N Dateigröße einer Datei auf einem HTTP-/Web-Server. Netzwerkprogrammierung 9
P File von http-Server kopieren Netzwerkprogrammierung 5
G unvollständige Daten: Http Client-Server-Kommunikation Netzwerkprogrammierung 2
G http 1.1 socket? Netzwerkprogrammierung 3
J HTTP-POST-Request mit Anhang über Socket Netzwerkprogrammierung 2
S http Server selber schreiben Netzwerkprogrammierung 5
S Suche API für einfachen HTTP-Zugriff. Netzwerkprogrammierung 17
Z HTTP Request Netzwerkprogrammierung 3
A http request per socket an apache server Netzwerkprogrammierung 5
M Ein HTTP-request aus Java heraus senden Netzwerkprogrammierung 3
N Download HTTP .php-Seite mit Anmeldung Netzwerkprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben