1

UNIXで実行されるJavaを使用して単純なWebサーバークラスをプログラムしようとしています。

WebServerクラスは、要求に基づいてHTMLを生成するperlスクリプトを呼び出します。

このことを考慮:

  1. クライアントはHTTPPOSTリクエストをWebサーバーに送信します
  2. HTTP POST本文を読む:"description=asd&action=add"
  3. byte[] byteParams以下に示すように書き込まれたHTTPPOST本文
  4. byteParams適切なHTMLを生成するには、PerlProcessオブジェクトに書き込む必要があります

コード:

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

これで、UNIXの環境変数を読み取って適切なHTMLを生成するperlProcessオブジェクトができました。

Perl ProcessオブジェクトのDataOutputStreamに書き込んだ後、入力(HTTP Post本文)に基づいて標準出力に自動的に書き込みますか?

または、先ほど書き込んだ内容を読み取るようにProcessオブジェクトに指示する必要がありDataOutputStream writeToPerlますか?

4

1 に答える 1

0

私は自分の質問に対する答えを見つけました。

Perl Processオブジェクトのに書き込んだ後、の入力に基づいて、DataOutputStream標準出力()に自動的に書き込みます。BufferedReader readFromPerlDataOutputStream

BufferedReaderPerlオブジェクトに書き込んだ後、Perlオブジェクトから期待どおりの結果が得られなかったため、ファイルパーミッションの問題が発生してこの質問をしました。DataOutputStream

于 2013-03-10T15:09:14.803 に答える