2012-04-11 6 views
1

Ich versuche, einen einfachen Java-Server auf eine XmlHttpRequest zu reagieren, aber ich bin mir nicht sicher, wie. Ab sofort erhält der Socket auf dem Server die Anfrage des Browsers. Nachdem der Socket-Ausgabestream abgerufen wurde, schreibt der Server in ihn und schließt dann alle Verbindungen. Gibt es etwas mehr dazu? Ich nehme an, dass Sie eine Kopfzeile benötigen würden, um korrekt auf die Anfrage zu antworten, wenn ja, was wäre diese Kopfzeile. Vielen Dank!Antwort auf AJAX-Anfrage von einem Java-Socket

Hier ist, was ich gerade mache. Ich kann jedoch nicht scheinen, dass der Browser die Nachricht akzeptiert.

Edit: Der Java-Server-Code:

private String HEADER = "HTTP/1.1 200 OK\n" + 
"Cache-Control: private\n" + 
"Content-Type: text/html; charset=utf-8\n" + 
"Expires: Sun, 21 Feb 2100 20:39:08 GMT\n" + 
"Server: Microsoft-IIS/7.5\n" + 
"Date: Sun, 21 Apr 2012 20:39:07 GMT\n" + 
"Connection: close\n" + 
"Content-Length: 10\n"; 

     browserWriter = 
       new PrintWriter(
         browser.getOutputStream(),true); 

      while((data = browserReader.readLine()) != null) { 
       if (data.indexOf("POST") != -1) { 

        /* TODO TEST - TAKE OUT */ 
        browserWriter.println(HEADER + "APPLESAUSE"); 
        browserWriter.close(); 
        browserReader.close(); 
        browser.close(); 
        return; 

Javascript:

xmlhttp.open("POST","http://10.0.2.15:1024/password?url=" + site, false); 
    xmlhttp.send(null); 

Antwort

1

Alle XMLHttpRequest die erfordern eine HTTP-Antwort, so HTTP-Header benötigt werden. Es ist in Ordnung, die Verbindung zu schließen, sobald die Antwort gegeben ist. Dies ist im Grunde nur als ein Webserver.

Einige HTTP-Header-Felder: http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

hier für die offizielle Spezifikation Siehe: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

Ein ordentliches Tutorial hier: http://net.tutsplus.com/tutorials/other/http-headers-for-dummies/

1

Für den Browser der Antwort des Servers zu verstehen, soll es gilt nach zum Response Format, das in der HTTP Protocol spezifiziert wird. Das einzige, was zusätzlich zum eigentlichen Antworttext erforderlich ist, ist eine Statuszeile, normalerweise HTTP/1.1 200 OK, wenn die Anfrage erfolgreich war.

Zusätzliche HTTP Headers wie Content-Length oder Content-Type können den Browser-Prozess helfen die Reaktion effizienter, aber wenn Sie viele dieser Start Einstellung sind Sie im Grunde Ihre eigenen HTTP-Server Implementierung und ich würde mit Jetty oder etwas anderes aus dem empfehlen bevor Sie diese Route hinuntergehen.

Verwandte Themen