【问题标题】:Is there a way to capture all outbound soap requests?有没有办法捕获所有出站肥皂请求?
【发布时间】:2014-03-03 23:12:16
【问题描述】:

我正在将一堆 PHP 代码迁移到新服务器。该代码用于对远程服务器进行 SOAP 调用以推送和拉取信息(数据库同步)。我已经确定了许多需要更新的脚本,但不能 100% 确定我拥有一切,而且开发这些东西的人已不在公司。

我的问题是,有没有办法捕获和记录来自服务器的所有 SOAP 请求?通过这种方式,我将能够准确指出正在运行的内容。也许打开 PHP SoapClient 构造函数的日志记录?我无法找到一种方法来做到这一点。如果没有,也许 Apache(LAMP 堆栈 [CentOS 6.5])或服务器上运行的其他服务可以做到这一点?

提前致谢。

【问题讨论】:

    标签: php apache soap soap-client


    【解决方案1】:

    您可以使用 SoapClient::_getLastRequest() 和 SoapClient::_getLastResponse(),然后使用 error_log 或其他日志平台记录输出。

    然后您可以使用 SoapUI 之类的工具手动向服务器发送请求,这将有助于调试请求。

    您需要在构造函数的 options 数组中将 'trace' 设置为 true 才能启用这些方法。

    http://au1.php.net/manual/en/soapclient.getlastrequest.php http://au1.php.net/manual/en/soapclient.getlastresponse.php

    【讨论】:

    • 谢谢,但我相信这将适用于每个单独的请求。我需要的是一个“开关”,我可以在服务器范围内打开它记录每个请求,以便我稍后返回并查看。原因是我不知道所有脚本的位置以及运行的内容/时间。
    • 您不能使用 SoapClient 本地执行此操作。解决此问题的一种方法可能是扩展 SoapClient,然后覆盖应用程序调用的方法,并使它们记录 __getLastRequest()/__getLastResponse() 的输出以及 parent:: .一些重构可以使您的应用程序使用您的自定义 SoapClient 而不是默认的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    相关资源
    最近更新 更多