我正在尝试使用在UNIX上运行的java编写一个简单的webserver类。
WebServer类将调用perl脚本,该脚本将根据请求生成HTML。
考虑一下:
"description=asd&action=add"
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中的Environment Variables以生成适当的HTML。
在写入Perl Process对象的DataOutputStream之后,它会根据输入(HTTP Post主体)自动写入其标准输出吗?
或者我是否需要告诉Process对象读取我刚写入DataOutputStream writeToPerl
的内容?
答案 0 :(得分:0)
我找到了问题的答案。
在写入Perl Process对象的DataOutputStream
之后,它将根据BufferedReader readFromPerl
中的输入自动写入其标准输出(DataOutputStream
)。
我有一些文件权限问题导致我提出这个问题,因为在写入BufferedReader
DataOutputStream
得到预期的结果