【问题标题】:How to send simple data from javascript to java application如何将简单数据从 javascript 发送到 java 应用程序
【发布时间】:2015-06-15 09:54:19
【问题描述】:

我正在尝试从 javascript 发送一条简单的消息。我想在 java 程序(服务器)中接收数据,但我似乎无法弄清楚如何在 java 中获取消息。

这是我的 javascript:

   if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    xmlhttp.open("POST", ip, true);
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.send("posX=" + posX + "&posX = " + posX);

我对此有 2 个问题。

  • 以上是发送简单字符串数据的最快方法吗 javascript到java程序,或者你能推荐一个替代方案 解决方案?
  • 如何使用 java 接收来自 javascript 的上述 POST 请求?

我真的希望有人可以帮助我。 任何帮助将不胜感激

【问题讨论】:

  • 您是否使用 Java 服务器来托管运行 javascript 的网页?
  • 对待它的方式与提交表单的方式完全相同。 ajax的使用教程很多很多
  • 感谢您的回答。我没有使用 java 服务器。它是 Telerik Kendo UI 中的 javascript。按照 Jiří Kantor 的建议,我设法向 java 服务器发送了一个 POST 请求。但是,我似乎无法提取随 POST 请求发送的参数。因此,如果你们中的任何人知道如何执行此操作,我将非常感谢您的帮助。
  • JavaScript 函数 保存 JSON 文件 可以被 java 读取有什么好处? (基本的javascript文件保存)[jsfiddle.net/UselessCode/qm5AG/]

标签: java javascript post xmlhttprequest


【解决方案1】:

由于我从来没有做过这样的事情,我不知道是否有任何最快的方法,但是这样 Java 应用程序必须在 TCP 端口 80 上进行侦听,应该就是这样。它还应该发送一个 HTTP 响应。

编辑: 在深入研究问题后,我想出了两件事:

  1. POST 数据部分没有被换行符终止,所以如果你使用BufferedReader 和它的readLine 方法,它只是挂在那里等待。它不会被终止,因为 #2
  2. 显然,AJAX 请求不会关闭套接字,因此 java 程序从中读取的流不会终止,因此您无法通过等待 InputStreamReaderread 方法返回 -1 来结束读取。我这么快发现的唯一方法是检查输入流是否准备好。 所以一个非常粗略但最小的例子是:

    import java.io.*;
    import java.net.*;
    
    
    class TCPServer {
    
         public static void main(String argv[]) throws Exception {
            ServerSocket welcomeSocket = new ServerSocket(80);
    
            while(true) {
                Socket connectionSocket = welcomeSocket.accept();
                InputStreamReader inFromClient = new InputStreamReader(connectionSocket.getInputStream());
                int c = 0;
    
                while(true) {
                    c = inFromClient.read();
                    System.out.print((char)c);
                    if(!inFromClient.ready()) {
                        break;
                    }
                }
                System.out.println("-------------------------");
            }
        }
    }
    

【讨论】:

  • 这就是我要找的!通过监听 TCP,我收到了 POST 请求。但我似乎无法获得随请求发送的参数。你知道如何提取这些吗?顺便谢谢你的回答!
  • 很抱歉格式混乱,但我无法让它工作:D
【解决方案2】:

我认为 HttpServer 是您正在寻找的。 它在端口 80 上侦听以接受 Http-Requests

HttpServer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 2019-02-13
    相关资源
    最近更新 更多