【问题标题】:RETS IQ for MRIS RETSMRIS RETS 的 RETS IQ
【发布时间】:2015-04-03 04:24:01
【问题描述】:

我正在使用 JSP 站点使用 RETSIQ 从 MRIS RETS 检索 MLS 数据

它在 2015 年 3 月 31 日仍然运行良好。 现在它不再从 RETS 服务器检索数据了。

我得到的错误信息是,

com.bigllc.retsiq.simpleclient.RETSClientException:搜索请求失败 - HTTP 服务器返回代码 500

这发生在行时,

retsSession.search(path, query, null, 1, 0, handler);

被执行

【问题讨论】:

    标签: jsp rets


    【解决方案1】:

    当您捕获响应流并将其保存到文件或在浏览器中查看时,您可能会发现您正在获取 HTTP 500 服务器错误页面,并且它会进一步告诉您您正在执行他们的操作声称是“饼干中毒”。

    该错误页面包含一个电子邮件地址,您可以在其中联系他们的 RETS 技术支持,我建议您立即联系。

    问题归结为 Apache HttpClient 3.x 如何处理 cookie。 retsIQ 使用 3.x 版本,默认为 RFC 2109 兼容 - 这与 1.7 以来的 RETS 规范一致。

    MRIS 不符合 RFC 2109。在与他们的支持交谈时,他们引用了 RFC 6265,这是关于 Cookie 的最新 RFC。但是,RETS 1.7 到 1.8 非常明确“客户端必须实现 cookie 处理,如 RFC 2109。”更糟糕的是,他们将 RFC 2109 合规性视为 cookie 中毒。

    您的困境是 retsIQ 隐藏了您需要将 CookiePolicy 修改为 CoookiePolicy.NETSCAPECookiePolicy.BROWSER_COMPATIBILITY 的 API。

    您有三个选择(按可行性和您控制结果的能力排序):

    1. 更改您的应用程序以使用 libRETS。
    2. 使用反射拦截/修改HttpClient的HttpState来修改CookiePolicy。
    3. 等待 MRIS 停止声称符合 RFC 2109 的 cookie 格式不正确。

    【讨论】:

    • 不明白你说的使用反射拦截/修改HttpClient的HttpState来修改CookiePolicy是什么意思。
    • 无论如何感谢您的回复。只是想知道我现在能做什么。
    • @sivaprasanna,您可以使用反射来拦截方法调用或访问其他私有成员。看看这个答案:stackoverflow.com/questions/1196192/…
    • 您知道必须对 cookie 进行哪些更改吗?你以前做过吗?你有任何工作示例代码吗?谢谢。
    • @sivaprasanna 我很清楚您应该仔细查看 libRETS。它具有 JAVA 绑定,并且由于它使用 cURL 进行 HTTP 处理,因此不会遇到您在使用 retsIQ 时遇到的问题。我已经向您展示了我知道有效的两个 HttpClient 3.x CookiePolicy 值。使用反射来拦截/修改 retsIQ 内部的调用是一个复杂且容易出错的过程,与我在这里尝试引导您完成它相比,您更有可能通过反复试验获得成功。您是否尝试过联系 Bridge Interactive(retsIQ 的作者)?
    【解决方案2】:

    感谢大家的回复和支持。

    问题由 MRIS 支持人员自己解决。

    问题在于他们的服务器不接受 RETSIQ 库,现在他们已修复它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多