2011-03-10 29 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是如何工作的