(Indy)如何用TIdHTTP的Head及Response取得Location資料 |
尚未結案
|
starwars
一般會員 發表:1 回覆:0 積分:0 註冊:2005-07-07 發送簡訊給我 |
我是 BCB 新手,從貴站爬文獲得很多心得,謝謝!!! ^_^ 我的問題: 我要解決 302 - Found 的問題,想要取得 Location 欄位內容。
且不要因302 - Found而使 TIdHTTP 出現錯誤 (因為要取得 Location 欄位
故而Handle Redirects 屬性設置為false) 我的程式如下: void __fastcall TForm1::Button1Click(TObject *Sender)
{
TMemoryStream *ms=new TMemoryStream;
TStringList *sl= new TStringList; IdHTTP1->Head("http://10.1.1.1/nf_login?login_type=1&user_id=testing&password=abc"); Memo1->Lines->Add(IdHTTP1->Response->ContentType);
Memo1->Lines->Add(IdHTTP1->Response->Date);
Memo1->Lines->Add(IdHTTP1->Response->Server);
Memo1->Lines->Add(IdHTTP1->Response->Connection);
Memo1->Lines->Add(IdHTTP1->Response->Location); } 會出現 "Read Timeout" 的訊息 ,, Memo1 也沒顯示任何東西 Handle Redirects 屬性改為 True,有訊息 是轉向後的,故而沒有 Location 請問各位先進,要如何才能獲得 Location 的資料,且不會出現錯誤訊息。 謝謝。 發表人 - starwars 於 2005/07/07 18:19:32
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
starwars 您好: 不知道您是否有其它的特殊要求?但是我使用下列 Get 的方式可以達到您描述的結果,試試看吧:
void __fastcall TForm1::Button1Click(TObject *Sender) { TMemoryStream *fs = new TMemoryStream(); IdHTTP1->HandleRedirects = false; AnsiString url = "http://www.google.com/"; AnsiString encodeURL = IdHTTP1->URL->URLEncode(NULL, url); IdHTTP1->Get(encodeURL, fs); Memo1->Lines->Add(""); Memo1->Lines->Add("ContentType: " IdHTTP1->Response->ContentType); Memo1->Lines->Add("Date: " IdHTTP1->Response->Date); Memo1->Lines->Add("Server: " IdHTTP1->Response->Server); Memo1->Lines->Add("Connection: " IdHTTP1->Response->Connection); Memo1->Lines->Add("Location: " IdHTTP1->Response->Location); fs->Free(); } void __fastcall TForm1::IdHTTP1Redirect(TObject *Sender, AnsiString &dest, int &NumRedirect, bool &Handled, TIdHTTPMethod &VMethod) { Handled = true; }7 天天敲鍵盤 v 時時按滑鼠 8 |
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |