atom feed2 messages in org.w3.www-talkHow to implement CGI in a Web Server
FromSent OnAttachments
Mukul GandhiMay 3, 2006 8:32 am 
Mukul GandhiMay 7, 2006 10:15 am 
Subject:How to implement CGI in a Web Server
From:Mukul Gandhi (
Date:May 3, 2006 8:32:30 am

I am trying to write a small HTTP server using Java. I have some doubt about how to implement CGI.

This is a portion of Java code that handles HTTP POST method, and tries to execute a PHP script. I feel this is the correct way to implement CGI (of course there are many more environment variables which I must set for CGI, which I'll do later). Later I'll try to incorporate CGI programs written in any CGI programming language.

String[] cmdarray = {"C:\\php-5.0.5\\php.exe", "htdocs\\test.php"}; String[] envp = {"CONTENT_LENGTH="+clength, "CONTENT_TYPE=application/x-www-form-urlencoded"};

Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec(cmdarray, envp); InputStream pis = process.getInputStream();

String header = "HTTP/1.1 200 OK\n"; header += "Content-Type: text/html\n\n";

os.write(header.getBytes()); os.flush();

int n = 0; while ((n = != -1) { char c = (char)n; os.write(c); os.flush(); }

I am correctly assigning the value to variable clength for CONTENT_LENGTH environment variable (taken from request header Content-Length). os is the OutputStream attached to the socket which is bound to a specific connection from the browser.

The PHP script (test.php) gets correctly called, and the output from PHP script correctly gets displayed on the browser. But the problem happens when I submit a HTML form to be handled by PHP. How will the PHP script read form data from HTTP body in the request? For information I must tell that HTML form POST data is accessible in the PHP script as $_POST["name"] (which presently incorrectly sets to null).

I'll be grateful for any pointers to solve this problem, and also any comments on the CGI implementation approach I am using..

Regards, Mukul