发出SOAP请求

时间:2012-07-13 12:24:22

标签: php soap request

我是PHP的新手 - 一个多月前开始使用PHP,JS和HTML,每天花几个小时。

我已经做了很多这方面的功课,但在实施方面却无法头脑清醒。我没有一个可以和我坐在一起的硬核程序员,因此在这里。但我相信如果这个问题得到解答,它会对很多新生儿和有经验的程序员有所帮助

问题 - 我可以理解SOAP的概念,但是无法如何制作简单的soap请求。 PHP中的步骤是什么。

  

//正确安装了php SOAP扩展

创建一个新的SOAP客户端:

$variable = new SoapClient ;

$inputxml = " the input XML file as a string ";

varibale__doRequest($input xml, "string location -??

我将XML输入作为变量..我指定了什么位置..需要启用缓存和缓存位置??,...) 这是我试图使用的PHP功能 - 如何使用此http://www.php.net/manual/en/soapclient.dorequest.php

//用于获取XML响应的PHP代码 //如何将变量作为字符串存储在变量中

有人可以在博客上使用PHP演示简单的SOAP请求。

我找不到一个例子,都专注于创建SOAP服务或SOAP服务器。我只想创建一个SOAP客户端并在PHP中发出请求 - 任何详细的laymnas指南 - PHP特定的?

这是我正在努力解决的SOAP服务 - 通过关键字查找公司

http://developer.dnb.com/service-directory/sales/16682663-1.html

如果有人可以撰写一篇解释详细信息的帖子,那将非常感激

PS:不确定我的挫败感是否合理,但SOAP和REST概念使编程听起来像Rocket Science ..我花了一个多星期,一天8小时,虽然我有一个关于制作SOAP请求的明确想法对SOAP概念的公平理解。就REST来说,它让我非常困惑 - 我现在不想在这里触摸那件事。

2 个答案:

答案 0 :(得分:2)

有php soap客户端,但你不必使用它.. 您可以手动构建请求并使用curl发布,然后您可以根据需要解析响应。

/**
* Request login body
*/
const REQUEST_LOGIN = '<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://www.company.com/soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding">
 <env:Body>
  <ns1:RequestLogin xmlns:ns1="http://www.company.com/soap">
   <ns1:Name>%username%</ns1:Name>
   <ns1:OrgId>0</ns1:OrgId>
   <ns1:AuthType>simple</ns1:AuthType>
  </ns1:RequestLogin>
 </env:Body>
</env:Envelope>
';

答案 1 :(得分:0)

PHP中的SOAP比看起来容易一些。如果您正在寻找一个长篇教程,那么DevZone上有一个很好的教程。我也会保留SoapClient class documentation handy

使用肥皂的要点

// $endpoint is the callback/uri of the WSDL.
// $options is an array of options.
$client = new SoapClient($endpoint, $options);

您可以在details for the constructor中了解有关其选项和终结点的更多信息。

PHP有一些magic methods__call就是其中之一。使用SOAP的最简单方法通常是调用可用方法。例如:

$response = $client->getLoginToken(array(
    'siteid' => 'foo',
    'secid' => 'bar',
));

在这种情况下,getLoginToken是一个SOAP方法调用。 SOAP客户端发现它不是对象上的方法,并将其作为方法传递给SOAP。传入的数组是作为参数传递给SOAP端点的参数。

我还会查看soapCall page上的示例。祝你好运。