【发布时间】:2011-09-01 16:55:04
【问题描述】:
我想从 PHP 向 Java Servlet 发送请求,并从其接收响应并将其显示在 PHP 页面上。这应该怎么做?
感谢和问候
阿比舍克·斯里坎特
【问题讨论】:
我想从 PHP 向 Java Servlet 发送请求,并从其接收响应并将其显示在 PHP 页面上。这应该怎么做?
感谢和问候
阿比舍克·斯里坎特
【问题讨论】:
如果您只想将 GET 请求对外部资源的响应打印到 PHP 响应中,那么您可以使用 file_get_contents()。
<?php echo file_get_contents("http://example.com/someservlet"); ?>
将调用 servlet 的 doGet() 方法,并且它返回的任何响应(甚至可以是转发的 JSP)都将作为字符串打印到 PHP 响应中。
如果您想要更细粒度的控制,例如使用 POST 或其他方式,然后转至 curl()。链接的 PHP 手册包含几个示例。
无论采用何种方式,请注意,无论何时返回 HTML,您都应确保最终得到有效的 HTML。例如,嵌套<html> 标签是非法的。如果您不确定,请通过 w3 validator 传递 PHP 页面。否则,您最好必须解析 HTML 以提取感兴趣的 <body> 片段,或者改用 <iframe>。
<iframe src="http://example.com/someservlet"></iframe>
【讨论】:
$http_response_header数组获得。
如果我对您的理解正确,您想在 php 中读取 servlet 的响应,然后从 php 中输出?
您可以在网址中使用file_get_contents(可能不是最好的方法,但为了简单起见,它是最简单的),然后只回显输出。
例如:
$content = file_get_content('http://www.google.com');
echo $content;
但是,如果您希望能够在 servlet 端登录或使用会话,则需要考虑其他事情。由于 php 对服务器的每个请求都是一个新请求,因此它不会像浏览器那样存储 cookie 等。
希望有帮助
【讨论】:
这种情况值得重新考虑,但是,如果没有其他选择......
如果有办法实际更新 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。幽灵狼只怕火。我已经帮不了你了,但如果你掌握了幽灵狼,他会指导你的。神速。
【讨论】:
如果你真的想要这样做,你可以创建一个 Java 应用程序,它接受参数来填充请求和响应对象,实例化一个 servlet,运行正确的方法,获取结果并显示它,然后从 PHP 调用这个 Java 应用程序。
或者您可以使用实验性和不推荐的PHP / Java Integration 模块。
【讨论】: