我想使用php将Sitelink与我的网站集成。对于演示,他们刚刚提供了此代码
echo '<p>Testing SiteLink...</p>';
define( 'SITELINK_URL', "https://www.smdservers.net/CCWs_3.5/CallCenterWs.asmx?WSDL");
define( 'SITELINK_CORP_CODE', "CCTST" );
define( 'SITELINK_LOC_CODE', "Demo" );
define( 'SITELINK_CORP_LOGIN', "Administrator" );
define( 'SITELINK_CORP_PASS', "Demo" );
$client = new SoapClient( SITELINK_URL );
$params->sCorpCode = SITELINK_CORP_CODE;
$params->sLocationCode = SITELINK_LOC_CODE;
$params->sCorpUserName = SITELINK_CORP_LOGIN;
$params->sCorpPassword = SITELINK_CORP_PASS;
try
{
$units = $client->SiteInformation( $params );
$result = $units->SiteInformationResult;
}
catch (Exception $e )
{
die( 'Error: '.$e->getMessage().'<br>'.$e );
}
echo htmlentities( $result->any );
但是我无法理解如何使用php来处理数据并对其进行处理。我必须获取单位大小及其各自的价格。任何帮助是极大的赞赏。提前谢谢。
答案 0 :(得分:1)
SiteInformation
期待数组不是Object
而您的$params
从未被宣布
define('SITELINK_URL', "http://www.smdservers.net/CCWs_3.5/CallCenterWs.asmx?WSDL");
define('SITELINK_CORP_CODE', "CCTST");
define('SITELINK_LOC_CODE', "Demo");
define('SITELINK_CORP_LOGIN', "Administrator");
define('SITELINK_CORP_PASS', "Demo");
$client = new SoapClient(SITELINK_URL);
$params = array("sCorpCode" => SITELINK_CORP_CODE,"sLocationCode" => SITELINK_LOC_CODE,"sCorpUserName" => SITELINK_CORP_LOGIN,"sCorpPassword" => SITELINK_CORP_PASS);
try {
$units = $client->SiteInformation($params);
header("Content-Type: text/xml");
print($units->SiteInformationResult->any);
} catch ( Exception $e ) {
die('Error: ' . $e->getMessage() . '<br>' . $e);
}
答案 1 :(得分:1)
您没有尝试获得正在获得的单位SiteInformation
首先为$params
添加类型:
$params = new stdClass; // as stdClass
$params->sCorpCode = SITELINK_CORP_CODE;
$params->sLocationCode = SITELINK_LOC_CODE;
$params->sCorpUserName = SITELINK_CORP_LOGIN;
$params->sCorpPassword = SITELINK_CORP_PASS;
然后:
$units = $client->UnitTypePriceList($params);
$result = $units->UnitTypePriceListResult->any;
并且您必须使用DOMDocument
解析数据,检查要显示的标记名称并将其打印出来:
$dom = new DOMDocument;
$dom->loadXML($result);
$xpath = new DOMXPath($dom);
$el = $xpath->query('//Table');
foreach($el as $units){
$UnitID = $xpath->query('UnitID_FirstAvailable', $units)->item(0)->nodeValue;
echo $UnitID;
}
我不知道你想要的是什么,但我以UnitID_FirstAvailable
为例。
答案 2 :(得分:1)
我知道这有点老了,但我一直在用API做一些大量的工作。首先,您需要这样:SiteLink API Documentation
要获得所有可用单位,您可以执行以下操作:
// define API connection credentials
define('SITELINK_URL', "http://www.smdservers.net/CCWs_3.5/CallCenterWs.asmx?WSDL");
define('SITELINK_CORP_CODE', "CCTST");
define('SITELINK_LOC_CODE', "Demo");
define('SITELINK_CORP_LOGIN', "Administrator");
define('SITELINK_CORP_PASS', "Demo");
$client = new SoapClient( SITELINK_URL );
$params->sCorpCode = SITELINK_CORP_CODE;
$params->sLocationCode = SITELINK_LOC_CODE;
$params->sCorpUserName = SITELINK_CORP_LOGIN;
$params->sCorpPassword = SITELINK_CORP_PASS;
$params->lngLastTimePolled = 0;
$params->bTestMode = true;
try
{
$units = $client->UnitsInformationAvailableUnitsOnly_v2($params);
$result = $units->UnitsInformationAvailableUnitsOnly_v2Result;
}
catch (Exception $e)
{
die( 'Error: '.$e->getMessage().'<br />'.$e );
}
echo '<table>';
$formatUnits = new SimpleXMLElement($result->any);
foreach($formatUnits->NewDataSet->Table as $unit){
echo "<tr>\r\n";
echo "<td><a href='#' data-unit-number='".$unit->sUnitName."' data-unit-id='".$unit->UnitID."' data-rate='".$rate."' class='res-unit-link'>".$unit->sUnitName."</a></td>\r\n";
echo "<td>".$unit->sTypeName."</td>\r\n";
echo "</tr>\r\n";
}
echo '</table>';
您可以var_dump($formatUnits)
查看SiteLink返回的对象中的所有可用数据。上面的代码是我做的一个例子,我使用jQuery从链接中获取所有data-
属性,用于租赁/预订过程。
我希望这有助于某人。我第一次开始使用API时真的可以使用它。