【问题标题】:Issues Fetching Proper Listings' Data Using RETS使用 RETS 获取正确列表数据的问题
【发布时间】:2015-09-23 16:32:19
【问题描述】:

我正在尝试从 CREA 的 DDF 下载房地产列表的实时提要。我正在通过 PHP 向他们的 DDF 发出 API 请求,并将所有最近的列表下载并下载到我的数据库中。这很好用,问题是我的客户列表在 DDF 中,应该被拉出,而所有其他列表都没有被拉出。我似乎得到了周边地区的所有列表,但可能没有,因为我无法收到我的客户的列表,这应该是拉动的一部分。当我与 CREA 的人员交谈时,他们说我的客户列表在 DDF 中,所以我应该能够将它们与所有其他列表一起提取。我希望从一些对提出这样的请求有更好理解的人那里得到一些建议,或者甚至更好地使用 CREA 的 DDF。

我将在下面提供我的代码,我将尝试仅包含相关的内容并删除不必要的代码以使这更容易一些。如果您想查看更多代码,我会根据要求添加这些部分。

如果我理解正确,我需要添加到我的参数数组中,但我真的不知道为什么我的请求会这样做,所以任何帮助都会很棒!

这是我的 download.php 文件的代码

$TimeBackPull = "-24 hours"; 

/* RETS Variables */
require("PHRets_CREA.php");
$RETS = new PHRets();
$RETSURL = "http://data.crea.ca/Login.svc/Login";
$RETSUsername = "**********************";
$RETSPassword = "**********************";
$RETS->Connect($RETSURL, $RETSUsername, $RETSPassword);
$RETS->AddHeader("RETS-Version", "RETS/1.7.2");
$RETS->AddHeader('Accept', '/');
$RETS->SetParam('compression_enabled', true);
$RETS_PhotoSize = "LargePhoto";
$RETS_LimitPerQuery = 100;
if($debugMode /* DEBUG OUTPUT */)
{
    $RETS->SetParam("catch_last_response", true);
    $RETS->SetParam("debug_file", "CREA_Anthony.txt");
    $RETS->SetParam("debug_mode", true);
}

$DBML = "(LastUpdated=" . date('Y-m-d', strtotime($TimeBackPull)) . ")";
$params = array("Limit" => 1, "Format" => "STANDARD-XML", "Count" => 1);
$results = $RETS->SearchQuery("Property", "Property", $DBML, $params);
$totalAvailable = $results["Count"];
for($i = 0; $i < ceil($totalAvailable / $RETS_LimitPerQuery); $i++)
{
    $startOffset = $i*$RETS_LimitPerQuery;

    $params = array("Limit" => $RETS_LimitPerQuery, "Format" => "STANDARD-XML", "Count" => 1, "Offset" => $startOffset);
    $results = $RETS->SearchQuery("Property", "Property", $DBML, $params);          
    foreach($results["Properties"] as $listing)
    {
       //Do Some Stuff
    }
}

这是我当前请求在返回 xml 文件中的样子

http://data.crea.ca/Search.svc/Search?SearchType=Property&Class=Property&Query=%28LastUpdated%3D2015-09-22%29&QueryType=DMQL2&Count=1&Format=STANDARD-XML&Limit=1&StandardNames=0

另一件事是 CREA 的人说应该有大约 1900 个活跃的列表可以提取,但是当我计算结果时,我现在只得到大约 182 个

【问题讨论】:

    标签: php api ddf


    【解决方案1】:

    你解决了吗?

    CREA DDF 是一种奇怪的动物。它们仅部分支持 RETS 规范,而不是完全支持。他们围绕“目的地”(又名“数据馈送”)和“技术提供商”分离设计了他们的系统。

    1) 您的每个客户都会创建一个或多个数据馈送,每个馈送都会分配一个唯一的 DestinationID。在设置提要时,他们会选择您作为技术提供商,因此他们的列表也会包含在您的提要中。

    2) 作为技术提供商,您有一个单一的提要,您可以在其中提取所有客户的所有列表。但是,这种情况出现问题的地方在于,每个列表都没有引用它所属的提要/目的地。您需要在特定目的地的上下文中提取数据,然后手动将当前 DestinationID 与通过的列表关联。

    CREA 认为,他们通过使用单一的技术提供商提要让事情变得更简单,但实际上他们让事情变得更加困难,因为他们提供的回复数据不完整。作为开发人员,您需要在最后手动进行关联。

    您的客户是否在设置数据馈送期间选择您作为他们的技术提供商?您是否看到他们的提要显示在您的 Destinations 表中?

    【讨论】:

    • 对不起,这有点跑题了,但是您知道 CREA DDF 是否能够同时请求多个对象(照片)。除了传入一个似乎有点疯狂的ListingKey之外,我什么也做不了,尤其是在初始化一个新数据库并且必须下载数十万条记录时。
    • @GifCo - 是的,DDF 支持使用标准 RETS GetObject() 调用检索单张照片和多部分请求。它们尚不支持获取 URL,但正在筹备中。
    • 非常感谢您回复我。只是为了确认当您说支持多部分请求时,您是指返回单个列表的所有照片的 GetObject() 调用吗?还是它实际上支持在一次调用中获取多个列表的所有照片?
    猜你喜欢
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    相关资源
    最近更新 更多