且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

调用远程Java Servlet

更新时间:2023-12-03 14:11:58

借助一些在线资源计算出来。必须首先收集提交的值(request.getParamater(bla)),构建数据字符串(URLEnconder),启动URLConnection并告诉它打开与指定URL的连接,启动OutputStreamWriter然后告诉它添加数据字符串(URLEncoder),然后最终读取数据并打印出来......

Figured it out with the help of some online resources. Had to first collect the submitted values (request.getParamater("bla")), build the data string (URLEnconder), start up a URLConnection and tell it to open a connection with the designated URL, startup an OutputStreamWriter and then tell it to add the string of data (URLEncoder), then finally read the data and print it...

以下是代码的要点:

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);
    }