我一遍又一遍地阅读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>
<?xml version="1.0" encoding="ISO-8859-1"?><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
。我无法绕过它。这些类甚至用于这个东西吗?我在这里问的是正确的问题吗?欢迎任何指导!
答案 0 :(得分:0)
如果您想使用(或使用)其他人SOAP
网络服务,请使用SoapClient
课程。
如果您希望通过网络服务公开部分应用以便其他人使用,则可以使用SoapServer
课程。
在您的情况下,另一个流程是发送您的应用数据,因此您需要公开部分应用以接收该数据。所以你是对的 - 你可以使用SoapServer
类。
PHP的内置SoapServer
类将自动为您解析SOAP
XML请求,并将其转换为您可以在代码中使用的对象。如果您发现自己需要手动解析XML,那么您做错了,最好使用普通的XML-RPC
样式API。
URI
字段主要用于XML命名空间。
location
中的SoapClient
参数是Web服务端点。如果您使用具有多个端点的SOAP
API,这将非常有用,它允许指定您想要的API。