簡體   English   中英

如何將簡單數據從JavaScript發送到Java應用程序

[英]How to send simple data from javascript to java application

我正在嘗試從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應用程序必須偵聽TCP端口80。 它還應該發送HTTP響應。

編輯:深入研究問題后,我想出了兩件事:

  1. POST數據部分不會以換行符終止,因此,如果您使用BufferedReader及其readLine方法,它將僅掛在那里並等待。 它不會被終止,因為#2
  2. AJAX請求顯然不會關閉套接字,因此Java程序從中讀取的流不會終止,因此您無法通過等待InputStreamReader read方法返回-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("-------------------------"); } } } 

我認為HttpServer是您想要的。 它在端口80上偵聽以接受Http-Requests

HttpServer的

暫無
暫無

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

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