PHP SOAP客户端发送XML

时间:2012-02-24 12:48:54

标签: php xml web-services soap

我正在尝试使用PHP创建Web服务。以下是我的代码 -

Web服务器 -

require 'inventory_functions.php';

ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache
$server = new SoapServer("inventory.wsdl");
$server->addFunction("getItemCount");
$server->handle();

Inventory_functions.php -

function getItemCount($upc){
    //in reality, this data would be coming from a database
    $items = array('12345'=>5,'19283'=>100,'23489'=>'234');
    return $items[$upc];
}

我的客户端测试 -

ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache
$client = new SoapClient("http://www.xxx.co.uk/service/inventory.wsdl");
$return = $client->getItemName('12345');
print_r($return);

当我跑这个时,每个人都可以。数字“5”将在我的浏览器中输出。我真正需要的是如何通过XML将数据发送到SOAP服务器的一些帮助,我将把这些数据添加到MySQL。

如何通过客户端测试发送XML?

由于

1 个答案:

答案 0 :(得分:0)

我不确定我理解你的问题。您想知道您应该为您的网络服务提供哪些XML输入,以便例如发送值“5”?

为了做到这一点,你应该首先分析生成的wsdl文件,然后,根据你选择的客户端编程语言,你可以生成一个客户端Stub来与Web服务本身进行交互。

或者,您可以直接向Web服务发出带有XML的HTTP POST(应该看起来像这样):

POST /service/mywebservice.php HTTP/1.1
Host: www.xxx.co.uk
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "<your.webservice.namespace>/getItemCount"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <getItemCount xmlns="<your.webservice.namespace>">
      <value>5</value>
    </getItemCount>
  </soap:Body>
</soap:Envelope>