1

私のサーバーには、いくつかの POST 要求を受け入れて処理する php ページがあります。それが単純なページであり、出力が単にエコーされたステートメントであるとしましょう。POST リクエストを送信するために Java プログラムから確立した URLConnection を使用して、取得した入力ストリームを使用して入力を取得しようとしましたconnection.getInputStream()。しかし、私が得るのはページのソース(PHPスクリプト全体)であり、それが生成する出力ではありません。ここではソケット接続を避けます。これは Url 接続または HttpRequest で実行できますか? どのように?

class htttp{
public static void main(String a[]) throws IOException{
    URL url=new URL("http://localhost/test.php");

    URLConnection conn = url.openConnection();

    //((HttpURLConnection) conn).setRequestMethod("POST");
    conn.setDoOutput(true);
    conn.setDoInput(true);
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 

    wr.write("Hello");
    wr.flush();
    wr.close();

    InputStream ins = conn.getInputStream();
    InputStreamReader isr = new InputStreamReader(ins);
    BufferedReader in = new BufferedReader(isr);
    String inputLine;
    String result = "";
      while( (inputLine = in.readLine()) != null )
                result += inputLine;
        System.out.print(result);



    }
      }

で Web ページのソース全体を取得test.phpresultます。しかし、php スクリプトの出力だけが必要です。

4

2 に答える 2

1

レンダリングすべき出力ではなく、PHP ソース自体を取得する理由は、ローカルの HTTP サーバー (対象となるリクエストを受信http://localhost/test.php) が、HTTP リクエストを PHP プロセッサに転送するのではなく、PHP ソースを返すことを決定したためです。出力をレンダリングします。

なぜこれが起こるのですか?これは、HTTP サーバーの構成に関係しています。それにはいくつかの理由があるかもしれません。まず、HTTP サーバーの構成を検証する必要があります。

  • マシンで使用している HTTP サーバーはどれですか?
  • http://localhost/test.phpブラウザをブラウズするとどうなりますか?
于 2012-09-29T09:17:01.760 に答える
0

ここでの問題は Java コードではなく、Web サーバーにあります。Web サーバーが PHP スクリプトを実行せずにそのまま送り返す理由を調査する必要があります。固定の結果を返し、(Web ブラウザーから) GET 要求を使用してアクセスされる単純な PHP スクリプトを使用してテストすることから始めることができます。それが機能したら、POST 要求に応答するものを使用してテストできます。

于 2012-09-29T09:16:48.417 に答える