从java程序发送数据到greasemonkey应用程序?

问题描述:

我想创建一个作为服务器的java程序和作为客户端的greasemonkey(java脚本应用程序)之间的连接。从java程序发送数据到greasemonkey应用程序?

我可以从客户端接收数据,但是我应该怎么做才能将数据从服务器发送到客户端? 我在服务器中使用OutputStream向客户端发送数据,但它似乎不起作用。在客户端,我用下面的代码来发送和接收数据:

GM_xmlhttpRequest({ 
method: 'POST', 
url: "http://localhost:8888", 

headers: { 
    'Content-type' : 'application/x-www-form-urlencoded', 
}, 
data : 'page_contents=' + window.location, 
onload : function(responseDetails) { 
    alert('Request for Atom feed returned ' + responseDetails.status + 
      ' ' + responseDetails.statusText + '\n\n' + 
      'Feed data:\n' + responseDetails.responseText); 
} 
}); 

我在服务器上使用的OutputStream来,但似乎的它不工作或没有任何关联的OutputStream(我尝试了基本的通信,但它没有工作,只接收数据)

ServerSocket srvr = new ServerSocket(8888); 
    Socket skt = srvr.accept(); 

    BufferedReader in = new BufferedReader(new  InputStreamReader(skt.getInputStream())); 
    System.out.print("Received string: '"); 
    String input=""; 
    while (!in.ready()) {} 
    while((input = in.readLine())!=null){ 
     System.out.println("-"+input); // Read one line and output it 
    }   
    in.close(); 
    //now I want to send some data to greasmonkey. 
    PrintWriter out = new PrintWriter(skt.getOutputStream(), true); 
    System.out.print("Sending string: '" + data + "'\n"); 
    //the line above, never has printed in console. i don't know why? 
    out.print(data); 
    }} 

任何建议将不胜感激。

非常感谢。

+0

的Greasemonkey的代码是好的,你不表现出足够的Java代码,以帮助这一点。 –

+0

已添加java代码。 – shohreh

+0

感谢您的Java代码。问题是一个简单的套接字不能完成Web响应所需的所有协议和转换。使用一个servlet或一个标准的Web应用程序。 –

正如你使用Java我猜你正在使用一个Servlet与服务器通信。

有效的例子可能是这个样子:

public class myServlet extends HttpServlet { 
    public void doPost(HttpServletRequest request, 
    HttpServletResponse response) throws ServletException, IOException 
{ 
    response.setContentType("text/html"); 

    // for text data you could write something like this: 
    PrintWriter output = response.getWriter(); 
    output.println("Hello, World\n"); 

    // for binary data you could use the output stream this way: 
    // Object binary_data = new Object(); 
    // ServletOutputStream output = response.getOutputStream(); 
    // output.print(binary_data); 
} 

对于更高级的输出,我会选择使用像Spring Web MVC框架至极的框架来 与交付JSP视图一个方便的支持和encapsules低电平访问输出流。

希望这有助于

+0

对不起。当我创建帖子时,问题被编辑。我会尽快修改我的答案。 – elfwyn

+0

感谢您的回复。但我不使用servlet,我只是想创建一个服务器套接字并通过输入和输出流传输数据。我有简单的输入和输出。但我无法与他们沟通。 – shohreh

+0

@shohreh,因此问题。有很多握手和包装正在进行。你需要复制所有这些。使用servlet要聪明得多。 –