Talk to a CGI/ServletTag(s): Networking Servlet/JSP
From the client point of view, there is no difference talking to CGI or Servlet. There is two ways to send a request to a CGI. The GET method contains encoded parameters in the URL. A typical URL talking to CGI using the GET method would be:
new URL("http://www.server.com/cgi-bin/acgi.pl?name=real&site=java+howto");
String theCGI = "http://www.server.com/cgi-bin/aCGI.pl?"; String encoded = "name=" + URLencoder.encode("Real Gagnon"); URL cgiurl = new URL(thecgi + encoded);
getAppletContext().showDocument(cgiurl);
The POST method allows the programmer to manipulate the data received from the CGI. First a connection is made to the CGI, an OutputStream is open to send the parameters (if any). Then InputStream is created to receive the result.
String theCGI = "http://www.server.com/cgi-bin/aCGI.pl"; String encoded = "name=" + URLencoder.encode("Real Gagnon"); URL CGIurl = new URL(theCGI); URLConnection c = CGIurl.openConnection(); c.setDoOutput(true); c.setUseCaches(false); c.setRequestProperty("content-type","application/x-www-form-urlencoded"); DataOutputStream out = new DataOutputStream(c.getOutputStream()); out.writeBytes(encoded); out.flush(); out.close(); BufferedReader in = new BufferedReader(new InputStreamReader(c.getInputStream()); String aLine; while ((aLine = in.readLine()) != null) { // data from the CGI System.out.println(aLine); }