从URLConnection读取

时间:2012-09-29 08:55:34

标签: java php http urlconnection

我的服务器中有一个php页面,它接受几个POST请求并处理它们。让我们说它是一个简单的页面,输出只是一个回声的声明。使用URLConnection我从Java程序建立发送POST请求,我试图使用通过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);



    }
      }

我在test.php中获得了网页result的完整来源。但我只想要php脚本的输出。

2 个答案:

答案 0 :(得分:1)

你得到PHP源本身而不是它应该呈现的输出的原因是你的本地HTTP服务器 - 接收针对http://localhost/test.php的请求 - 决定回送PHP源,而不是转发对PHP处理器的HTTP请求以呈现输出。

为什么会这样?这与您的HTTP服务器的配置有关;可能有几个原因。对于初学者,您应该验证HTTP服务器的配置。

  • 您在计算机上使用哪个HTTP服务器?
  • 当您通过浏览器浏览http://localhost/test.php时会发生什么?

答案 1 :(得分:0)

这里的问题不是Java代码 - 问题在于Web服务器。您需要调查您的网络服务器未执行PHP脚本但将其原始发送回原因的原因。您可以先使用一个简单的PHP scipt进行测试,该scipt返回一个固定的结果,并使用GET请求(来自Web浏览器)进行访问。一旦工作正常,您可以使用响应POST请求的那个进行测试。