2011-03-10 59 views
0

编辑 已经有相当的发展。目前的问题是这样的:Delphi - 连接并登录到网页

我比较了从浏览器发送并从我的应用发送的请求。有一些差异,我设法纠正其中的大部分。有些仍然没有确定,因为我还没有弄明白。我正在使用INDY。

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

  • 在标题中我有这样的代码:AcceptEncoding:='gzip,deflate,sdch';但是当我解析出去的请求时,它陈述了这一点:AcceptEncoding:gzip,deflate,sdch,identity但我确定我没有“身份”在代码中的任何地方。

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

非常感谢。

+3

您可以登录到某个站点并维护具有许多组件套件(包括INDY)的呼叫之间的会话。我只是不明白你在这里有什么问题,看起来你不知道网络是如何工作的。如果你不这样做,开始学习HTTP post并获取动词,不同网站如何管理会话,以及不同网站如何管理登录和会话以跟踪用户。学习如何使用嗅探器,并在尝试使用任何编程语言在低级别执行此操作之前查看原始数据在浏览器和首选站点之间的传递方式。 – jachguate 2011-03-10 18:33:45

+0

我已成功登录,请参阅已编辑的帖子。 – 2011-03-12 13:31:12

+0

@Magicmaster当你从任何浏览器登录到网站时,你发现在嗅探器中发布的内容是什么? – jachguate 2011-03-14 17:19:25

回答

0

好的。让我们评论:

我该如何发送(或添加)cookie到请求中?

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

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

AcceptEnconding告诉服务器它可以使用这些算法压缩响应。 Indy支持gzip,deflate,sdch,identity,indy正在更新que header请求以添加您忘记放置的那个。利用Indy http://www.ciuly.com/delphi/indy/persistent-login-example-for-geocacheing-no-ssl/

W3
Wikipedia

1

还没有确切尝试过自己,但这里是我发现关于网站登录的例子:

你应该看看那些链接了解HTTP是如何工作的