从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);
}}
任何建议将不胜感激。
非常感谢。
答
正如你使用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低电平访问输出流。
希望这有助于
的Greasemonkey的代码是好的,你不表现出足够的Java代码,以帮助这一点。 –
已添加java代码。 – shohreh
感谢您的Java代码。问题是一个简单的套接字不能完成Web响应所需的所有协议和转换。使用一个servlet或一个标准的Web应用程序。 –