如何使用PHP读取servlet的响应

时间:2011-05-25 11:38:01

标签: java php servlets rpc

我想从PHP向Java Servlet发送请求,并从PHP接收响应并在PHP页面上显示它。该怎么做?

谢谢和问候

Abishek R Srikaanth

4 个答案:

答案 0 :(得分:6)

如果你想要的只是将GET请求的响应打印到PHP响应中的外部资源plain vanilla,那么你可以使用file_get_contents()

<?php echo file_get_contents("http://example.com/someservlet"); ?>

将调用servlet的doGet()方法,并且它返回的任何响应(甚至可以是转发的JSP)将作为字符串打印到PHP响应中。

如果你想要更细粒度的控制,例如使用POST或其他东西,然后前往curl()。链接的PHP手册包含几个例子。

无论如何,请注意每当它返回HTML时,您应该确保最终得到有效的HTML。例如,嵌套<html>标记是非法的。如果您不确定,请将PHP页面传递到w3 validator。否则,您最好解析HTML以提取感兴趣的<body>件或改为使用<iframe>

<iframe src="http://example.com/someservlet"></iframe>

答案 1 :(得分:1)

如果我正确理解你,你想在php中读取servlet的响应,然后从php输出它?

你可以使用file_get_contents到网址(Probaly不是最好的方法,但为了简单起见它最简单)然后只是回显输出。

例如:

$content = file_get_content('http://www.google.com');
echo $content;

但是,如果您希望能够在servlet端登录或使用会话,则需要考虑其他事项。由于每个从php发送到服务器的请求都是新的,它不存储cookie等,就像浏览器一样。

希望有所帮助

答案 2 :(得分:1)

这种情况可能需要重新考虑,但是,如果没有其他选择......

如果有办法实际更新portlet,那么我建议在Java端创建某种形式的服务调用 - SOAP,自定义RPC等。从技术上讲,这是最正确的做事方式。

如果失败,如果这是一个简单的GET请求,那么请使用file_get_contents。

如果必须是POST / PUT / DELETE,则可以使用cURL。 cURL还具有能够处理模拟会话的好处,这意味着您可以模拟登录和后续操作(尽管并非没有困难)。

如果您没有cURL并且需要POST / PUT / DELETE,那么streams库可能能够为您提供所需的信息。

如果您没有流库或cURL,并且需要POST / PUT / DELETE,那么有other means完成此任务,但也许您应该重新考虑这种情况。

如果以上所有方法都不起作用,那么您需要驯服Spectral Wolf。光谱狼只害怕火。我再也无法帮助你,但如果你掌握了光谱狼,他会指导你。一帆风顺。

答案 3 :(得分:0)

如果确实想要这样做,您可以创建一个Java应用程序,它接受参数来填充请求和响应对象,实例化servlet,运行正确的方法,获取结果并显示它,然后从PHP调用这个Java应用程序。

或者您可以使用 experimental 和未推荐的PHP / Java Integration模块。