我正在尝试使用在 UNIX 上运行的 java 编写一个简单的 webserver 类。
WebServer 类将调用 perl 脚本,该脚本将根据请求生成 HTML。
考虑一下:
- 客户端向 WebServer 发送 HTTP POST 请求
- 阅读 HTTP POST 正文:
"description=asd&action=add"
- HTTP POST Body 写入
byte[] byteParams
如下所示 - 需要写入
byteParams
Perl Process 对象以生成适当的 HTML
代码:
String postParams = "/usr/bin/env REQUEST_METHOD=POST QUERY_STRING= " +" CONTENT_LENGTH=" + contentLength + " CONTENT_TYPE=" + contentType + " /usr/bin/perl " + filename;
Process perlProcess = Runtime.getRuntime().exec(postParams);
DataOutputStream writeToPerl = new DataOutputStream(perlProcess.getOutputStream());
//write the http post request body to writeToPerl
writeToPerl.write(byteParams, 0, byteParams.length);
InputStreamReader readFromPerlInputStream = new InputStreamReader(perlProcess.getInputStream());
BufferedReader readFromPerl = new BufferedReader(readFromPerlInputStream);
BufferedReader readFromPerlError = new BufferedReader(new InputStreamReader(perlProcess.getErrorStream()));
所以现在我们有了 perlProcess 对象,它将读取 UNIX 中的环境变量以生成适当的 HTML。
在写入 Perl Process 对象的 DataOutputStream 之后,它会根据输入(HTTP Post 正文)自动写入其标准输出吗?
或者我是否需要告诉 Process 对象来读取我刚刚写入的内容DataOutputStream writeToPerl
?