繁体   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