我正在尝试使用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?
由于
答案 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>