Creare un semplice server HTTP con Java?



Answers

Questo è come andrei su questo:

  1. Avviare un ascolto ServerSocket (probabilmente sulla porta 80).
  2. Una volta ricevuta una richiesta di connessione, accetta e passa a un altro thread / processo (ciò lascia il tuo ServerSocket disponibile per continuare ad ascoltare e accettare altre connessioni).
  3. Analizza il testo della richiesta (in particolare, le intestazioni in cui vedrai se è un GET o POST e i parametri passati.
  4. Rispondi con le tue intestazioni ( Content-Type , ecc.) E l'HTML.

Trovo utile utilizzare Firebug (in Firefox) per vedere esempi di intestazioni. Questo è ciò che vuoi emulare.

Prova questo link: - Server multithread in Java

Question

Qual è il modo più semplice per creare un semplice server HTTP con Java? Ci sono biblioteche in comune per facilitare questo? Devo solo rispondere a GET/POST e non posso usare un server delle applicazioni.

Qual è il modo più semplice per realizzare questo?




Sono sorpreso che questo esempio non sia qui:

http://hc.apache.org/httpcomponents-core-ga/httpcore/examples/org/apache/http/examples/ElementalHttpServer.java

EDIT >> Il link sopra non è raggiungibile. Ecco un estratto dall'esempio POST seguito dal link agli esempi HTTP.

 if (!conn.isOpen()) {
        Socket socket = new Socket(host.getHostName(), host.getPort());
        conn.bind(socket);
    }
    BasicHttpEntityEnclosingRequest request = new
    BasicHttpEntityEnclosingRequest("POST",
    "/servlets‐examples/servlet/RequestInfoExample");
    request.setEntity(requestBodies[i]);
    System.out.println(">> Request URI: " + request.getRequestLine().getUri());
    httpexecutor.preProcess(request, httpproc, coreContext);
    HttpResponse response = httpexecutor.execute(request, conn, coreContext);
    httpexecutor.postProcess(response, httpproc, coreContext);
    System.out.println("<< Response: " + response.getStatusLine());
    System.out.println(EntityUtils.toString(response.getEntity()));
    System.out.println("==============");
    if (!connStrategy.keepAlive(response, coreContext)) {
    conn.close();
    } else {
    System.out.println("Connection kept alive...");
    }

http://hc.apache.org/httpcomponents-core-ga/httpcore/examples/org/apache/http/examples/




Jetty è un ottimo modo per incorporare facilmente un server HTTP. Supporta il proprio modo semplice per collegare i gestori ed è un server app J2EE completo se hai bisogno di più funzionalità.




Un contenitore servlet è sicuramente la strada da percorrere. Se Tomcat o Jetty sono troppo pesanti per te, considera Winstone o TTiny .







Links