如何在PHP中访问Windows Web服务

时间:2014-11-21 19:04:35

标签: php windows web service

我想通过网络服务访问我的一些客户端数据。他向我提供了以下信息,以便以XML格式获取这些数据。

http://www.clients-domain.com/erpsync/erp_sync.asmx

User = abcd

密码= 1234

功能细节:

GetAllItemData - 将返回为网络选择的所有项目及其价格

GetItemDataByDate - 将返回在特定日期之间更新的所有项目

GetAllItemStock - 将返回网站所有项目的更新库存

GetStockByItem - 将返回单个物品的库存。

此Web服务位于基于Windows的服务器上。

我不知道如何在PHP中调用上面的URL来获取这些数据。 他告诉我,这个Web服务的返回值是XML格式。

它也是SOAP 1.1

任何有用的帮助

1 个答案:

答案 0 :(得分:1)

因为他说SOAP简单扩展soap client

1建立与SOAP的连接

$soapCon = new Utils_SoapClient("http://www.clients-domain.com/erpsync/erp_sync.asmx", array());
$soapCon->setCredentialsHeader(User, Password);

创建一个传递变量的结构

$struct = new stdClass();
$struct->item1 = $item1;             

客户端为您提供传递参数/变量的函数

GetAllItemData - 将返回为网络选择的所有项目及其价格

$result = $soapCon->GetAllItemData(new SoapVar($struct, SOAP_ENC_OBJECT));

GetItemDataByDate - 将返回在特定日期之间更新的所有项目

$result = $soapCon->GetItemDataByDate(new SoapVar($struct, SOAP_ENC_OBJECT));

GetAllItemStock - 将返回网站所有项目的更新库存

$result = $soapCon->GetAllItemStock(new SoapVar($struct, SOAP_ENC_OBJECT));

GetStockByItem - 将返回单个物品的库存。

$result = $soapCon->GetStockByItem(new SoapVar($struct, SOAP_ENC_OBJECT));

肥皂客户端类

class Utils_SoapClient extends SoapClient {

   protected $_targetNamespace;

   public function __construct($wsdl, $options){
           parent::__construct($wsdl, $options);

           // detect target namespace
           $xml = simplexml_load_file($wsdl);
           $this->_targetNamespace = (string) $xml['targetNamespace'];
   }

   public function setCredentialsHeader($login, $password) {
           $header = new SoapHeader($this->_targetNamespace,
                   'CredentialsSoapHeader',
                   new SoapVar(
                           array(
                                   'Login' => $login,
                                   'Password' => $password,
                           ),
                           SOAP_ENC_OBJECT,
                           'CredentialsSoapHeader',
                           $this->_targetNamespace
                   )
           );

           $this->__setSoapHeaders(array($header));
   }
}