単純なHTML応答をブラウザに送信するためのJavaソケットを取得しようとしています。
これが私のJavaコードです:
Socket socket = server.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String s;
// this is a test code which just reads in everything the requester sends
while ((s = in.readLine()) != null)
{
System.out.println(s);
if (s.isEmpty())
{
break;
}
}
// send the response to close the tab/window
String response = "<script type=\"text/javascript\">window.close();</script>";
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println("HTTP/1.1 200 OK");
out.println("Content-Type: text/html");
out.println("Content-Length: " + response.length());
out.println();
out.println(response);
out.flush();
out.close();
socket.close();
server
使用する開いているポートを自動的に選択するように設定されたServerSocketです。
アイデアは、リダイレクトされたWebページhttp:\\localhost:port
(port
ポートserver
がリッスンしている場所)が自動的に閉じられることです。
このコードが実行されると、ブラウザーが応答を受信し、送信するすべての情報をブラウザーが受信することを確認しました。
window.close();
ただし、ウィンドウ/タブが閉じておらず、ブラウザのJavascriptコンソールに手動でコマンドを発行してタブを閉じることもできません。
ここで何が欠けていますか?指定されたコンテンツを含むhtmlページがウィンドウ/タブを自動的に閉じる必要があることを知っていますが、なぜこれが機能しないのですか?私はこれをGoogleChromeでテストしています。
より完全なhtmlWebページを試しましたが、それでもうまくいきません。
ブラウザがページソースとして報告しているものは次のとおりです。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript">window.close();</script>
</head>
<body>
</body>
</html>