簡體   English   中英

響應來自Java Socket的AJAX請求

[英]Responding to AJAX request from a Java Socket

我試圖讓一個簡單的Java服務器響應XmlHttpRequest,但我不知道如何。 截至目前,服務器上的套接字獲取瀏覽器的請求。 獲取套接字輸出流后,服務器會寫入它,然后關閉所有連接。 還有更多的東西嗎? 我假設您需要一個標頭來正確響應請求,如果是這樣,那個標頭會是什么。 謝謝!

這就是我現在正在做的事情。 但是,我似乎無法讓瀏覽器接受該消息。

編輯:Java服務器代碼:

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);

所有XmlHTTPRequest都需要HTTP響應,因此需要HTTP頭。 一旦給出響應,就可以關閉連接。 這基本上只是作為Web服務器。

一些HTTP標頭字段: http//en.wikipedia.org/wiki/List_of_HTTP_header_fields

請參閱此處獲取官方規范: http//www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

這是一個不錯的教程: http//net.tutsplus.com/tutorials/other/http-headers-for-dummies/

要使瀏覽器了解服務器的響應,它應該根據HTTP協議中指定的Response格式有效。 除了實際響應主體之外,唯一需要的是狀態行,如果請求成功,通常是HTTP/1.1 200 OK

其他HTTP標頭 (如Content-LengthContent-Type可以幫助瀏覽器更有效地處理響應,但是如果您開始設置大量這些,您基本上是在實現自己的HTTP服務器,我建議使用Jetty或其他方法關閉沿着這條路走下去的架子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM