我正在尝试用PHP开发一个非常简单的SOAP服务器和客户端。 目标是从远程XML文档接收内容作为源。
这是我到目前为止所做的,我需要帮助如何从普通数组中提取XML文件中的数据,就像现在一样。 这是在inventory_functions.php中找到的从数组中获取的函数,如何将其更改为从XML文件中获取? 我是在正确的轨道上,这是一个SOAP设置吗?
function getItemCount($upc) {
// In reality, this data would be coming from a database
$items = array('12345'=>5,'19283'=>100,'23489'=>'234');
// Return the requested value
return $items[$upc];
}
这是服务器的代码:
// Load the database
require 'inventory_functions.php';
// Turn off WSDL cache
ini_set("soap.wsdl_cache_enabled", "0");
// Create a new SoapServer object with inventory.wsdl
$server = new SoapServer("inventory.wsdl");
// Register the getItemCount function
$server->addFunction("getItemCount");
// Start the handle
$server->handle();
这是客户端的代码:
// Turn off WSDL cache
ini_set("soap.wsdl_cache_enabled", "0");
// Create a new SOAPClient object
$client = new SoapClient("inventory.wsdl");
// Get the value for the function getItemCount with the ID of 12345
$getItemCount = $client->getItemCount('12345');
// Print the result
echo ($getItemCount);
请帮忙!
答案 0 :(得分:2)
问题不是SOAP服务器问题,而是XML访问。
假设您的XML包含与示例中引用的数组相同的数据,并且您可以在服务器上获得simpleXML:
//load your xml file into $xmlStr, with file_get_contents() or whatever.
$xmlObj = simplexml_load_string($xmlStr);
$items = objectsIntoArray($xmlObj);
你也可以使用DomDocument,它有一个DOM API,所以如果你熟悉HTML DOM,它会更容易。
在您的示例中,它有一个很大的优势,您可以使用Xpath直接在XML中搜索结果,而不是使用数组。
答案 1 :(得分:0)
为了更好地使用,您可以尝试像http://sourceforge.net/projects/nusoap/这样的肥皂客户端,以获得更好的灵活性。