我有一个简单的Java编写的HTTP服务器。我的目标是让一个javascript/ajax客户端能够从服务器获取消息。我已经可以检测到建立的连接,但客户端无法获取从服务器中输出的消息。
在我的客户端中有一个按钮,点击它后服务器的消息没有被传递,但是可以向服务器发送连接。当点击这个按钮时,客户端应该显示“Test Server”。
客户端
<html>
<body>
<h2>AJAX</h2>
<button type="button" onclick="loadDoc()">Request data</button>
<p id="demo"></p>
<script>
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("demo").innerHTML = xhttp.responseText;
}
};
xhttp.open("GET", "http://127.0.0.1", true);
xhttp.send();
}
</script>
</body>
</html>
服务器
public class JavaHttpServer {
protected void start() {
ServerSocket s;
System.out.println("Webserver starting up on port 80");
try {
s = new ServerSocket(80);
} catch (Exception e) {
System.out.println("Error: " + e);
return;
}
System.out.println("Waiting for connection");
for (;;) {
try {
Socket remote = s.accept();
System.out.println("Connection, sending data.");
BufferedReader in = new BufferedReader(new InputStreamReader(
remote.getInputStream()));
PrintWriter out = new PrintWriter(remote.getOutputStream());
String str = ".";
while (!str.equals(""))
str = in.readLine();
out.println("HTTP/1.0 200 OK");
out.println("Content-Type: text/html");
out.println("Server: Bot");
out.println("");
out.println("<H1>Test Server</H2>");
out.flush();
remote.close();
} catch (Exception e) {
System.out.println("Error: " + e);
}
}
}
public static void main(String args[]) {
JavaHttpServer ws = new JavaHttpServer();
ws.start();
}