我想从PHP向Java Servlet发送请求,并从PHP接收响应并在PHP页面上显示它。该怎么做?
谢谢和问候
Abishek R Srikaanth
答案 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模块。