修改 有一个很大的发展。目前的问题是:
我比较了从浏览器发送并从我的应用发送的请求。存在一些差异,我设法纠正了其中的大多数。有些仍然没有固定,因为我还没弄清楚它是怎么回事。我正在使用INDY。
如何将Cookie发送(或添加)到请求中?
我试过这个:IdHTTP.CookieManager.AddCookie('bakatheme=BrectanTheme',IdHTTP1.URL)
但它不起作用。另外,在INDY帮助中他们说它应该是AddCookie(String,String),但是我的Delphi只接受(String,TIdURI) - 我不确定它是否是我正在调用的正确的URI。
在Headers中我有这段代码:AcceptEncoding:='gzip,deflate,sdch';
但是当我解析传出请求时,它会说明:AcceptEncoding:gzip,deflate,sdch,identity
但我确信我在任何地方都没有“身份”代码。
这是我的请求与浏览器不同的两件事。现在,我收到500内部服务器错误,是否可能是由于缺少cookie或第二件事造成的?
非常感谢。
答案 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的工作原理: