当您捕获响应流并将其保存到文件或在浏览器中查看时,您可能会发现您正在获得 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 非常明确“客户端必须实现 RFC 2109 中指定的 cookie 处理”。更糟糕的是,他们将 RFC 2109 合规性视为 cookie 中毒。
您的困境是 retsIQ 隐藏了您需要将 CookiePolicy 修改为CoookiePolicy.NETSCAPE
或的 API CookiePolicy.BROWSER_COMPATIBILITY
。
您有三个选择(按照可行性和您控制结果的能力排序):
- 更改您的应用程序以使用 libRETS。
- 使用反射拦截/修改HttpClient的HttpState来修改CookiePolicy。
- 等待 MRIS 停止声称符合 RFC 2109 的 cookie 格式错误。