【问题标题】:How to read a response of a servlet using PHP如何使用 PHP 读取 servlet 的响应
【发布时间】:2011-09-01 16:55:04
【问题描述】:

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

感谢和问候

阿比舍克·斯里坎特

【问题讨论】:

    标签: java php servlets rpc


    【解决方案1】:

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

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

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

    如果您想要更细粒度的控制,例如使用 POST 或其他方式,然后转至 curl()。链接的 PHP 手册包含几个示例。

    无论采用何种方式,请注意,无论何时返回 HTML,您都应确保最终得到有效的 HTML。例如,嵌套&lt;html&gt; 标签是非法的。如果您不确定,请通过 w3 validator 传递 PHP 页面。否则,您最好必须解析 HTML 以提取感兴趣的 &lt;body&gt; 片段,或者改用 &lt;iframe&gt;

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

    【讨论】:

    • 有没有办法用file_get_contents检查响应头上的状态码?
    • 可以通过$http_response_header数组获得。
    【解决方案2】:

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

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

    例如:

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

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

    希望有帮助

    【讨论】:

      【解决方案3】:

      这种情况值得重新考虑,但是,如果没有其他选择......

      如果有办法实际更新 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。幽灵狼只怕火。我已经帮不了你了,但如果你掌握了幽灵狼,他会指导你的。神速。

      【讨论】:

        【解决方案4】:

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

        或者您可以使用实验性和不推荐的PHP / Java Integration 模块。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-04-14
          • 1970-01-01
          • 2016-04-05
          • 2017-06-19
          • 2016-03-02
          • 2013-11-25
          • 2019-08-09
          • 2014-01-16
          相关资源
          最近更新 更多