Delphi - 连接并登录网页

时间:2011-03-10 15:58:40

标签: delphi login indy

修改 有一个很大的发展。目前的问题是:

  

我比较了从浏览器发送并从我的应用发送的请求。存在一些差异,我设法纠正了其中的大多数。有些仍然没有固定,因为我还没弄清楚它是怎么回事。我正在使用INDY。

  • 如何将Cookie发送(或添加)到请求中?
    我试过这个:IdHTTP.CookieManager.AddCookie('bakatheme=BrectanTheme',IdHTTP1.URL)但它不起作用。另外,在INDY帮助中他们说它应该是AddCookie(String,String),但是我的Delphi只接受(String,TIdURI) - 我不确定它是否是我正在调用的正确的URI。

    < / LI>
  • 在Headers中我有这段代码:AcceptEncoding:='gzip,deflate,sdch';但是当我解析传出请求时,它会说明:AcceptEncoding:gzip,deflate,sdch,identity但我确信我在任何地方都没有“身份”代码。

这是我的请求与浏览器不同的两件事。现在,我收到500内部服务器错误,是否可能是由于缺少cookie或第二件事造成的?

非常感谢。

2 个答案:

答案 0 :(得分:1)

我自己没有完全尝试过,但这是我发现使用indy进行网站登录的一个例子 http://www.ciuly.com/delphi/indy/persistent-login-example-for-geocacheing-no-ssl/

答案 1 :(得分:0)

确定。让我们评论一下:

  

如何将Cookie发送(或添加)到请求中?

你不应该这样做。 Indy为你处理这个问题(但如果真的想要,那就有TidCookieManager)。但在我看来,你不知道饼干是如何工作的。它不是你可以添加到请求的东西。它来自服务器,它识别你。

  

在Headers中我有这段代码:AcceptEncoding:='gzip,deflate,sdch';

AcceptEnconding告诉服务器它可以使用这些算法压缩响应。 Indy支持gzip,deflate,sdch,identity并且indy正在更新que header请求以添加您忘记放置的那个。

您应该查看这些链接以了解http的工作原理:

W3
Wikipedia