2

我想使用 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 感染数据并处理它。我必须获取单位尺寸及其各自的价格。任何帮助是极大的赞赏。提前致谢。

4

3 回答 3

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

观看现场演示

于 2012-10-09T12:04:22.573 回答
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为例。

于 2012-10-09T12:04:42.507 回答
1

我知道这有点老了,但我一直在使用 API 做一些广泛的工作。首先,你会想要这个:SiteLink API 文档

要获取所有可用单位,您可以执行以下操作:

// 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 返回的对象中的所有可用数据。上面的代码是我使用 jQuerydata-从链接中获取所有属性以用于租赁/预订过程的示例。

我希望这对某人有所帮助。当我第一次开始使用 API 时,我真的可以使用它。

于 2015-05-22T17:32:30.123 回答