Вызов удаленного Java-сервлета - PullRequest
2 голосов
/ 02 июля 2010

У меня есть страница jsp, которая содержит форму, она должна отправлять данные формы на удаленный сервлет, который вычисляет их, а затем возвращает их в виде XML.Это работает, но в данный момент я создаю экземпляр и диспетчер, который работает только с локальными сервлетами, тогда как я хочу, чтобы он работал с удаленным сервлетом.

Ранее мне говорили, что HTTPClient сделал бы это, но эта вещь стала такой головной болью, и это кажется полным излишним для того, что я хочу сделать.Должен быть какой-то простой метод, в отличие от смешения со всеми этими jar-компонентами и зависимостями?

Пожалуйста, дайте пример кода, если это возможно, я действительно полный новичок в Java, гораздо больше в PHP-парне: P

1 Ответ

2 голосов
/ 02 июля 2010

Разобрался с помощью некоторых онлайн-ресурсов. Пришлось сначала собрать отправленные значения (request.getParamater ("bla")), построить строку данных (URLEnconder), запустить URLConnection и сказать ему открыть соединение с указанным URL, запустить OutputStreamWriter и затем сказать ему: добавить строку данных (URLEncoder), затем, наконец, прочитать данные и распечатать их ...

Ниже суть кода:

String postedVariable1 = request.getParameter("postedVariable1");
String postedVariable2 = request.getParameter("postedVariable2");

//Construct data here... build the string like you would with a GET URL     
String data = URLEncoder.encode("postedVariable1", "UTF-8") + "=" + URLEncoder.encode(postedVariable1, "UTF-8");
data += "&" + URLEncoder.encode("postedVariable2", "UTF-8") + "=" + URLEncoder.encode(submitMethod, "UTF-8");

    try {
        URL calculator = new URL("http://remoteserver/Servlet");
        URLConnection calcConnection = calculator.openConnection();
        calcConnection.setDoOutput(true);
        OutputStreamWriter outputLine = new OutputStreamWriter(calcConnection.getOutputStream());
        outputLine.write(data);
        outputLine.flush();


        // Get the response
        BufferedReader streamReader = new BufferedReader(new InputStreamReader(calcConnection.getInputStream()));
        String line;
        //streamReader = holding the data... can put it through a DOM loader?
        while ((line = streamReader.readLine()) != null) {
            PrintWriter writer = response.getWriter();
            writer.print(line);
        }
        outputLine.close();
        streamReader.close();

    } catch (MalformedURLException me) {
        System.out.println("MalformedURLException: " + me);
    } catch (IOException ioe) {
        System.out.println("IOException: " + ioe);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...