为什么HasNext()返回false,何时返回false

时间:2014-05-23 22:23:14

标签: rets

我正在使用libRets for .NET,并使用有效的用户帐户查询http://retsgw.flexmls.com/rets2_1/。从C#开始,在调用Search()后,我使用GetCount()检查计数,得到6300个结果,但是当我第一次调用HasNext()时返回false

检查XML响应,即使结果计数提供了数字,结果看起来也是空的()。

那么......结果在哪里?

确切的查询如下:

http://retsgw.flexmls.com/rets2_1/Search?Class=OpenHouse&Count=1&QueryType=DMQL2&SearchType=OpenHouse&Select=ListingID&StandardNames=1

以下是请求:

SearchRequest request = client.CreateSearchRequest("OpenHouse", "OpenHouse", "");
request.SetStandardNames(true);
request.SetSelect("ListingID");

请求的方式如下:

SearchResultSet result = client.Search(request);

以下是处理结果的方式:

while (result.HasNext()) {
    // Do something
}

2 个答案:

答案 0 :(得分:4)

因此,看起来FlexMLS支持能够帮助(相当快)。

我需要将&Format=COMPACT-DECODED添加到查询字符串中。

所以,在代码中它看起来像这样:

request.SetFormatType(SearchRequest.FormatType.COMPACT_DECODED);

答案 1 :(得分:1)

1)您将StandardNames设置为true然后设置选择。 StandardNames中可能不存在该选择。 (您已经查看了服务器返回的元数据,对吗?)可能服务器在执行计数时不会将select考虑在内,但是在完整查询中,它没有任何信息要发回因为它没有与您选择的表匹配的表。未设置选择时会发生什么?

2)您是否已完成数据包跟踪或设置libRETS以将网络流量记录到文件中? (我不知道这是不是你的意思“检查XML响应,看起来结果是空的(),即使结果计数提供了一个数字。”)如果你没有,那就做,看看是否服务器正在传回任何信息。

如果服务器正在传递包信息,您可能在libRETS中发现了一个错误,我邀请您加入libRETS-users邮件列表并在那里共享此数据(以及该网络跟踪)。

如果服务器返回0结果,您可能需要联系MLS和/或FlexMLS以查看您是否没有权限查看结果。一些RETS服务器具有细粒度的结果,您可以获得计数,但不能获取数据。