使用PHP接收SOAP进程

时间:2016-12-22 18:46:54

标签: php xml web-services soap

我一遍又一遍地阅读http://php.net/manual/en/book.soap.php。我不明白我是否应该使用SoapClient的SoapServer。看来我的应用程序应该是服务器。这次试验和错误对我没有用。

情况:程序将每隔这么多分钟的数据发送到我的应用程序的URL。我发现它在我URL时收到数据,开始用echo file_get_contents('php://input')或其他任何东西(不是我管理的)解析它似乎很愚蠢。

simplexml_load_string()

...

<?xml version="1.0" encoding="ISO-8859-1"?><SOAP-ENV:Envelope

...

<SOAP-ENV:Body> 

我认为这应该是足够的代码来理解这个概念。它是 <SOAPSDK1:PostData xmlns:SOAPSDK1="http://tempuri.org/message/"> <tcXML> &lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;&lt;shop 之后的部分,我希望将其加载到PHP对象中。

以PHP的文档为例:

<tcXML>

我不明白我需要提供什么URI,因为我只是收到数据?

然后我想:那么我需要SoapClient类,就像这样:

function test($x)
{
    return $x;
}

$server = new SoapServer(null, array('uri' => "http://test-uri/"));
$server->addFunction("test");
$server->handle();

我需要再次提供一些$client = new SoapClient(null, array('location' => "http://localhost/soap.php", 'uri' => "http://test-uri/", 'style' => SOAP_DOCUMENT, 'use' => SOAP_LITERAL)); uri。我无法绕过它。这些类甚至用于这个东西吗?我在这里问的是正确的问题吗?欢迎任何指导!

1 个答案:

答案 0 :(得分:0)

如果您想使用(或使用)其他人SOAP网络服务,请使用SoapClient课程。

如果您希望通过网络服务公开部分应用以便其他人使用,则可以使用SoapServer课程。

在您的情况下,另一个流程是发送您的应用数据,因此您需要公开部分应用以接收该数据。所以你是对的 - 你可以使用SoapServer类。

PHP的内置SoapServer类将自动为您解析SOAP XML请求,并将其转换为您可以在代码中使用的对象。如果您发现自己需要手动解析XML,那么您做错了,最好使用普通的XML-RPC样式API。

URI字段主要用于XML命名空间。

location中的SoapClient参数是Web服务端点。如果您使用具有多个端点的SOAP API,这将非常有用,它允许指定您想要的API。

相关问题