Отправка данных в приложение greasemonkey из Java-программы? - PullRequest
0 голосов
/ 26 августа 2011

Я хочу создать соединение между java-программой в качестве сервера и greasemonkey (java-скриптом) в качестве клиента.

Я могу получать данные от клиента, но что я должен сделать для отправки данных изсервер клиенту?Я использую 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);
     }}

Любое предложение будет с благодарностью.

Большое спасибо.

1 Ответ

1 голос
/ 26 августа 2011

Поскольку вы используете Java, я полагаю, что вы используете сервлет для связи с сервером.

Допустимый пример может выглядеть примерно так:

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 и инкапсулирует низкоуровневый доступ к выходному потоку.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...