2011-10-31 69 views
4

我用delphi XE2,寫一個簡單的代碼連接到雅虎網絡信使 ,但我得到這個消息德爾福:連接到雅虎網絡信使與idhttp

如果你看到了這個頁面,您的瀏覽器設置阻止你從 自動重定向到一個新的UR

procedure TForm2.Button1Click(Sender: TObject); 
var 
idVar:TStringList; 
Cookies:string; 
begin 
idVar:=TStringList.Create; idVar.Clear; 
idVar.Add('.tries=1'); 
idVar.Add('.src=vsu'); 
idVar.Add('.md5='); 
idVar.Add('.hash='); 
idVar.Add('.js='); 
idVar.Add('.last='); 
idVar.Add('promo='); 
idVar.Add('.intl=us'); 
idVar.Add('.bypass='); 
idVar.Add('.partner='); 
idVar.Add('.u=3p9b5hh7aiqbl'); 
idVar.Add('.v=0'); 
idVar.Add('.challenge=J5TQOMzQ9Sr5hwnIHYMiVyI2i1_M'); 
idVar.Add('.yplus='); 
idVar.Add('.emailCode='); 
idVar.Add('pkg='); 
idVar.Add('stepid='); 
idVar.Add('.ev='); 
idVar.Add('hasMsgr=0'); 
idVar.Add('.chkP=Y'); 
idVar.Add('.done=http://webmessenger.yahoo.com/'); 
idVar.Add('.pd=wmsgr_ver=0&c=B_VH9oa42e68KuzJEhSlKbE-&ivt=&sg='); 
idVar.Add('login='+edt1.Text); 
idVar.Add('passwd='+edt2.Text); 
idVar.Add('.persistent=y'); 
    Memo1.Text:=idhtp1.Post('https://login.yahoo.com/config/login?',idVar); 
end; 

procedure TForm2.FormCreate(Sender: TObject); 
begin 
idhtp1.CookieManager:=idckmngr1; 
idhtp1.IOHandler:=idslhndlrscktpnsl1; 
idhtp1.RedirectMaximum:=5000; 
idhtp1.Request.BasicAuthentication:=False; 
idhtp1.HandleRedirects := True; 

idslhndlrscktpnsl1.SSLOptions.Method:=sslvSSLv23; 
idhtp1.Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'; 
end; 

procedure TForm2.idhtp1Redirect(Sender: TObject; var dest: string; 
    var NumRedirect: Integer; var Handled: Boolean; var VMethod: string); 
begin 
Handled:=True; 
end; 
+0

您不必在新創建的字符串列表中調用「清除」。他們已經開始這樣。 –

+0

代碼是否到達'Handled:= True'行? – mjn

+2

@lord_viper:如果沒有看到來回的完整HTTP流量,就很難診斷。請證明。你所顯示的只是一條短信,沒有足夠的信息。很可能,服務器在該短信出現時不會發送重定向回覆,並且有幾個因素可能導致發生這種情況。我的猜測是,最初的請求無效/格式錯誤,或者服務器確實發出了TIdHTTP所遵循的重定向,但後續請求以某種方式無效/格式錯誤,或者可能是所需的cookie沒有繼續執行,等等。 –

回答

1

如果你看到了這個頁面,瀏覽器設置阻止您 自動重定向到一個新的URL。

這來到提琴手HTTP/1.1 200 OK所以問題是不重定向。

什麼對我來說只是重複整個Button1Click這條消息來了之後,我正確登錄。在此期間收集的cookies是關鍵,因此您可以嘗試只發送一個請求,但預先設置了Cookie。或者,如果它沒有幫助,只需重複請求與收集餅乾。 TIdCookieManager來拯救!