使用Delphi 2010和Indy处理cookies

4
我不太熟悉处理cookie,不确定我的代码或Indy版本是否存在问题,这是通过研究其他帖子得出的结论。
使用Delphi 2010和Indy 10.5.5。
在设计时设置了一个CookieManager。我可以发送初始登录请求(使用POST方法)到服务器,并成功地收到“成功”代码(从服务器应用程序返回),CookieManager显示它已接受来自服务器的Cookie。
当我尝试回复服务器(再次使用POST)以获取下一组信息时,我从服务器应用程序收到错误代码,指示授权失败,并且服务器技术支持人员告诉我检查发送回复的Cookie。
如何检查发送回服务器的Cookie标头的内容? 此外,在另一篇帖子中,我看到Indy 10 IdCookieManager.pas和IdCookie.pas已在2011年进行更新。我是否应将我的Indy更新为最新版本,因为这可能是我的问题?
提前感谢您。
以下是更多信息:
感谢您之前的帮助;我似乎越来越接近重新安装Indy10。
我清除了系统中所有Indy内容,除了最近的版本(10.5.8),昨天我下载了它。[实际上,我只是将旧文件移动到一个具有不寻常名称的目录中。]
现在,我可以在所有5个包上进行干净的编译。
我能够将两个主要包(以dcl开头的那些)添加到我的程序项目列表中。
但是,当我尝试编译我的主程序时,会出现“[DCC致命错误] E2202需要的包IndyCore未找到。”的错误。
我尝试从项目中删除并重新安装dcl包。当我将它们删除时,我收到消息说IndyCore和其他3个包也将被删除-因此似乎知道dclIndyCode140使用IndyCore140。
我已将一些目录添加到我的搜索路径,并尝试将5个bpl放置在不同的目录中。所有这些都没有任何影响,此时我感到困惑。
有什么想法?建议?
史蒂夫

1
Indy有一个版本号,这可能比文件日期更有用。右键单击表单上的任何Indy组件,版本号在上下文菜单的顶部项目中。您可以编辑帖子,提到版本号而不是您现在拥有的日期。它可能会提高您快速获得答案的机会。 :) - Ken White
1
升级到Indy 10.5.8是我首先尝试的。我也不安装Indy包,只是将Indy添加到项目路径并在运行时创建组件。 - mjn
1个回答

1

升级到最新版本是明确推荐的。 Indy's website上有链接。是的,在早期的Indy 10版本中,cookie支持存在问题,但现在已经修复。

至于你的另一个问题,要查看 TIdHTTP 发送了什么,你有几个选择:

  1. 发送请求后查看 TIdHTTP.Request.RawHeaders 属性。

  2. 将 Indy 的 TIdLog... 组件之一附加到 TIdHTTP,比如 TIdLogFile,然后查看输出。

  3. 使用外部数据包嗅探器,比如 Wireshark。


我一直在升级Indy到10.5.8版本,按照Indy网站上的步骤进行操作:按照指示下载文件并获得了所有干净的编译,能够在IDE中安装dclIndyCore140.bpl设计时间包,但获取dclIndyProtocols140.bpl时出现以下错误:“在动态链接库IndyProtocols140.bpl中找不到@Idfips@initialization$qqrv的程序入口点”。IDfips.pas是隐式包含;尝试将其添加到项目中,但仍然出现错误。如何处理?您有什么建议吗? - user1181503
过程入口点错误通常意味着您的计算机上仍然存在旧的Indy软件包二进制文件。您没有全部删除它们。当IDE加载dclIndyProtocols140.bpl时,它会依次加载IndyProtocols140.bpl(因为它是一个依赖项),并在操作系统的DLL搜索路径中找到旧版本。 - Remy Lebeau
请查看我原始问题下的“这里有更多信息”部分。在Indy升级安装方面仍然遇到麻烦。 - user1181503
你尝试过在文本编辑器中编辑项目文件以更改软件包引用的名称吗? - Remy Lebeau
这个最后的建议很有效,Indy现在没问题了。然而,还是有一些新的关于Delphi环境变量的问题。我发布了一个新的问题:“Delphi 2010 Environmental Variable Edit”,因为我的原始Indy问题已经解决了。非常感谢。 - user1181503

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接