使用php集成Sitelink

时间:2012-10-09 11:39:10

标签: php

我想使用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来处理数据并对其进行处理。我必须获取单位大小及其各自的价格。任何帮助是极大的赞赏。提前谢谢。

3 个答案:

答案 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);
}

See Live DEMO

答案 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​​时真的可以使用它。