idhttp post出現Socket error #0 |
答題得分者是:kuraki5336
|
darren99168
一般會員 發表:7 回覆:9 積分:3 註冊:2016-05-06 發送簡訊給我 |
請問在利用IDHHTTP寫以下 YAHOO信箱自動登錄時發生Socket error #0
不知道錯誤在哪邊 有前輩可以指教一下一嗎? 先謝謝前輩們 procedure TForm1.Button4Click(Sender: TObject); const PostUrl = 'https://login.yahoo.com/config/login?.intl=tw&.done=https://tw.yahoo.com/'; var respStream : TStringStream; params : TStringList; begin params := TStringList.Create; respStream := TStringStream.Create(''); TRY idhttp1.HandleRedirects := true; idhttp1.Request.ContentType := 'application/x-www-form-urlencoded; charset=UTF-8'; idhttp1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko/20100101 Firefox/12.0'; params.Add('.persistent=y'); params.Add('_crumb=HtQYlq0n'); params.Add('_format=json'); params.Add('_loadtpl=1'); params.Add('_seqid=2'); params.Add('_ts=1475463657'); params.Add('_uuid=6T3ZyxViyUuC'); params.Add('countrycode=886'); params.Add('otp_channel='); params.Add('passwd=' edit7.Text); params.Add('signin=authtype'); params.Add('username=' edit6.Text); IdHTTP1.Post(sPostUrl, params, respStream); richedit1.Text := respStream.DataString; params.Free; FINALLY END; end; |
kuraki5336
初階會員 發表:13 回覆:35 積分:34 註冊:2010-06-09 發送簡訊給我 |
你好像是要連線 https: ?
但並沒有看到你設定 TIdSSLIOHandlerSocketOpenSSL ? 又或者是使用的是可視元件但SSL FHandlerSSL.SSLOptions.Method := sslvSSLv23; 要再設定。 不太肯定的答案不過可以先往這找找。又或者可能是沒有 ssleay32.dll 還有一個應該叫做 libssl.dll ===================引 用 darren99168 文 章=================== 請問在利用IDHHTTP寫以下 YAHOO信箱自動登錄時發生Socket error #0 不知道錯誤在哪邊 有前輩可以指教一下一嗎? 先謝謝前輩們 procedure TForm1.Button4Click(Sender: TObject); const PostUrl = 'https://login.yahoo.com/config/login?.intl=tw&.done=https://tw.yahoo.com/'; var respStream : TStringStream; params : TStringList; begin params := TStringList.Create; respStream := TStringStream.Create(''); TRY idhttp1.HandleRedirects := true; idhttp1.Request.ContentType := 'application/x-www-form-urlencoded; charset=UTF-8'; idhttp1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko/20100101 Firefox/12.0'; params.Add('.persistent=y'); params.Add('_crumb=HtQYlq0n'); params.Add('_format=json'); params.Add('_loadtpl=1'); params.Add('_seqid=2'); params.Add('_ts=1475463657'); params.Add('_uuid=6T3ZyxViyUuC'); params.Add('countrycode=886'); params.Add('otp_channel='); params.Add('passwd=' edit7.Text); params.Add('signin=authtype'); params.Add('username=' edit6.Text); IdHTTP1.Post(sPostUrl, params, respStream); richedit1.Text := respStream.DataString; params.Free; FINALLY END; end; |
darren99168
一般會員 發表:7 回覆:9 積分:3 註冊:2016-05-06 發送簡訊給我 |
都有設定阿 DLL檔也有放了
測試了其他的網站是可行的 但利用YAHOO信箱測試登入就會發生問題,不知是哪邊錯了 ===================引 用 kuraki5336 文 章=================== 你好像是要連線 https: ? 但並沒有看到你設定 TIdSSLIOHandlerSocketOpenSSL ? 又或者是使用的是可視元件但SSL FHandlerSSL.SSLOptions.Method := sslvSSLv23; 要再設定。 不太肯定的答案不過可以先往這找找。又或者可能是沒有 ssleay32.dll 還有一個應該叫做 libssl.dll ===================引 用 darren99168 文 章=================== 請問在利用IDHHTTP寫以下 YAHOO信箱自動登錄時發生Socket error #0 不知道錯誤在哪邊 有前輩可以指教一下一嗎? 先謝謝前輩們 procedure TForm1.Button4Click(Sender: TObject); const PostUrl = 'https://login.yahoo.com/config/login?.intl=tw&.done=https://tw.yahoo.com/'; var respStream : TStringStream; params : TStringList; begin params := TStringList.Create; respStream := TStringStream.Create(''); TRY idhttp1.HandleRedirects := true; idhttp1.Request.ContentType := 'application/x-www-form-urlencoded; charset=UTF-8'; idhttp1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko/20100101 Firefox/12.0'; params.Add('.persistent=y'); params.Add('_crumb=HtQYlq0n'); params.Add('_format=json'); params.Add('_loadtpl=1'); params.Add('_seqid=2'); params.Add('_ts=1475463657'); params.Add('_uuid=6T3ZyxViyUuC'); params.Add('countrycode=886'); params.Add('otp_channel='); params.Add('passwd=' edit7.Text); params.Add('signin=authtype'); params.Add('username=' edit6.Text); IdHTTP1.Post(sPostUrl, params, respStream); richedit1.Text := respStream.DataString; params.Free; FINALLY END; end; |
kuraki5336
初階會員 發表:13 回覆:35 積分:34 註冊:2010-06-09 發送簡訊給我 |
https://goo.gl/photos/UmKAmDX7SQpfuThg7
程式碼 跟 內容物我貼在上面了 沒問題呢 我註解了三行 //idhttp1.HandleRedirects := true; //idhttp1.Request.ContentType := 'application/x-www-form-urlencoded; charset=UTF-8'; //idhttp1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko/20100101 Firefox/12.0'; 增加一行 IdHTTP1.ReadTimeout := 30; 改了一個字 IdHTTP1.Post(sPostUrl, params, respStream); 你沒這個字串↑↑↑↑↑↑↑↑↑↑↑我把它改成Posturl .... ===================引 用 darren99168 文 章=================== 都有設定阿 DLL檔也有放了 測試了其他的網站是可行的 但利用YAHOO信箱測試登入就會發生問題,不知是哪邊錯了 ===================引 用 kuraki5336 文 章=================== 你好像是要連線 https: ? 但並沒有看到你設定 TIdSSLIOHandlerSocketOpenSSL ? 又或者是使用的是可視元件但SSL FHandlerSSL.SSLOptions.Method := sslvSSLv23; 要再設定。 不太肯定的答案不過可以先往這找找。又或者可能是沒有 ssleay32.dll 還有一個應該叫做 libssl.dll ===================引 用 darren99168 文 章=================== 請問在利用IDHHTTP寫以下 YAHOO信箱自動登錄時發生Socket error #0 不知道錯誤在哪邊 有前輩可以指教一下一嗎? 先謝謝前輩們 procedure TForm1.Button4Click(Sender: TObject); const PostUrl = 'https://login.yahoo.com/config/login?.intl=tw&.done=https://tw.yahoo.com/'; var respStream : TStringStream; params : TStringList; begin params := TStringList.Create; respStream := TStringStream.Create(''); TRY idhttp1.HandleRedirects := true; idhttp1.Request.ContentType := 'application/x-www-form-urlencoded; charset=UTF-8'; idhttp1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko/20100101 Firefox/12.0'; params.Add('.persistent=y'); params.Add('_crumb=HtQYlq0n'); params.Add('_format=json'); params.Add('_loadtpl=1'); params.Add('_seqid=2'); params.Add('_ts=1475463657'); params.Add('_uuid=6T3ZyxViyUuC'); params.Add('countrycode=886'); params.Add('otp_channel='); params.Add('passwd=' edit7.Text); params.Add('signin=authtype'); params.Add('username=' edit6.Text); IdHTTP1.Post(sPostUrl, params, respStream); richedit1.Text := respStream.DataString; params.Free; FINALLY END; end;
編輯記錄
kuraki5336 重新編輯於 2016-10-04 18:02:17, 註解 無‧
|
darren99168
一般會員 發表:7 回覆:9 積分:3 註冊:2016-05-06 發送簡訊給我 |
|
kuraki5336
初階會員 發表:13 回覆:35 積分:34 註冊:2010-06-09 發送簡訊給我 |
DelphiXe 、 DELPHI BERLIN 都測過。
我覺得呢應該還是在那兩顆eayssl.DLL 那個的問題我把我電腦的這兩個給你你放到你專案下試試看,說不定就好了。 https://drive.google.com/file/d/0Bw65pqTUp5t8SDN4eFpVNDFjcVk/view?usp=sharing 因為你說其他post 沒問題。 我覺得吧更像是環境有問題 # – . 直接傳送錯誤....從未遇過 還是用你的版本把範本放上來我幫你run看看.....驗證一下是不是環境問題。 ===================引 用 darren99168 文 章=================== https://goo.gl/photos/N9tfYWCnqNjHEXK18 圖片已上傳 感謝前輩指導,但我一樣依你的方式修正了一次,仍然無法成功,相關設定如圖 請問前輩是用哪一版本的delphi寫的 |
darren99168
一般會員 發表:7 回覆:9 積分:3 註冊:2016-05-06 發送簡訊給我 |
|
kuraki5336
初階會員 發表:13 回覆:35 積分:34 註冊:2010-06-09 發送簡訊給我 |
測試了一下你包出來的exe 的確無法執行。
但我拿你的直接source 直接編譯後是可以用的。 可能原因在於你的runtime 這可能要請問其他高手們了。 delphi 2010的話要等我回家才能在測看看了。 ===================引 用 darren99168 文 章=================== 感謝 Kuraki5336 熱心解答,因為我是用 DELPHI 2010寫的,有用你的dll測試,似乎版本會出錯 以下是我的測試檔,再麻煩幫我RUN看看,謝謝 https://drive.google.com/file/d/0B64p8hTb6rvrZEJ3eTFKb1hQdGs/view?usp=sharing |
darren99168
一般會員 發表:7 回覆:9 積分:3 註冊:2016-05-06 發送簡訊給我 |
|
darren99168
一般會員 發表:7 回覆:9 積分:3 註冊:2016-05-06 發送簡訊給我 |
|
sparklerl
一般會員 發表:2 回覆:5 積分:1 註冊:2007-03-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |