全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5463
推到 Plurk!
推到 Facebook!

請問如何不靠 Indy 做 HTTPS POST ?

缺席
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-02-01 14:39:45 IP:210.241.xxx.xxx 訂閱
請問如何用 Delphi 7 不靠 Indy 做 HTTPS POST ? 目前從舊文章中查到一點資料, 努力中 ...

用 Google 搜尋 "delphi winsock https post begin" 中 ...

HttpSendRequest
http://msdn2.microsoft.com/en-us/library/aa384247.aspx
Microsoft 有提供wininet 及 winhttp 皆可使用https可查詢MSDN


------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-02-01 16:01:08 IP:61.219.xxx.xxx 訂閱
找到一點資訊, 不過要 Import 元件, 有些麻煩
http://community.csdn.net/Expert/topic/4853/4853087.xml?temp=.760174
在delphi中選擇功能表Project->Import Type library,然後分別把
Microsoft WinHTTP Services,version5.1(Version 5.1)

Microsoft Scripting Runtime (Version 1.0)
加到程式中 (點擊Create Unit)


代碼:
<textarea class="delphi" rows="10" cols="60" name="code"> procedure TForm1.Button1Click(Sender: TObject); var http:WinhttpRequest; fso:FileSystemObject; fs:TextStream; fil:File_; url,user,password,path,xmlFile,statusStr:string; begin try path:='c:\test.xml'; url:='https://test/test/test'; user:='test'; password:='test'; fso:=CreateComObject(CLASS_FileSystemObject) as FileSystemObject; fil:=fso.GetFile(path); fs:=fil.OpenAsTextStream(ForReading,TristateUseDefault); xmlFile:=fs.ReadAll; fs.Close; http:=CreateComObject(CLASS_WinHttpRequest) as WinHttpRequest; http.SetTimeouts(10000,10000,10000,10000); http.Option[WinHttpRequestOption_SslErrorIgnoreFlags]:=13056; http.Open('POST',url,EmptyParam); http.SetRequestHeader('Content-Type','text/xml'); http.SetRequestHeader('Content-Length',inttostr(length(xmlFile))); http.SetCredentials(user,password,0); http.Send(xmlFile); statusStr:=http.StatusText; if statusStr='200' then begin ShowMessage('send success'); end else begin ShowMessage('send failed'); end; except on err:EOleException do begin ShowMessage(err.Message); end else begin ShowMessage('other error!'); end; end; end; </textarea>
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-02-02 15:33:05 IP:61.219.xxx.xxx 訂閱
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
yojin
一般會員


發表:13
回覆:18
積分:6
註冊:2005-06-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-04-02 00:33:15 IP:220.135.xxx.xxx 訂閱
請問版主大大,下載之後怎麼用,我找了相關的文章滿久了,都沒有提到,請問能麻煩你說明一下嗎?

===================引 用 pcboy 文 章===================
SSL DLL下載地點
http://www.indyproject.org/Sockets/SSL.en.aspx
?
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-04-02 07:07:07 IP:203.73.xxx.xxx 訂閱
放在你程式所在的目錄
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
yojin
一般會員


發表:13
回覆:18
積分:6
註冊:2005-06-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-04-02 15:31:49 IP:220.135.xxx.xxx 訂閱
pcboy 大大你好:
我的 IDE 是 BCB 6.0,Indy 是 8.0.25 的版本,我在網路上有看到說明這兩個檔案和程式放在一起即可,但以下的程式碼和那兩個檔案有什麼關係嗎?且我在我的 Indy 版本中,好像也沒辦法編譯成功以下的程式碼,請問問題是出在哪裡呢?


[code cpp]

IdSSLIOHandlerSocket1->SSLOptions->Method=TIdSSLVersion(sslvSSLv23);

IdSSLIOHandlerSocket1->SSLOptions->RootCertFile="test.cer";

IdHTTP1->IOHandler=IdSSLIOHandlerSocket1;

[/code]
編輯記錄
yojin 重新編輯於 2009-04-02 15:32:37, 註解 無‧
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-04-02 16:54:08 IP:61.220.xxx.xxx 訂閱
1.不同版本 Indy, 程式寫法可能有點不同
2.當您使用的 API 實際上是某 .dll 提供的, 該 .dll 必須放在 OS 目錄或程式所在目錄
3.手邊機器沒有安裝 BCB 6.0, 您要自力救濟了
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
yojin
一般會員


發表:13
回覆:18
積分:6
註冊:2005-06-04

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-04-02 18:04:50 IP:220.135.xxx.xxx 訂閱
pcboy 大大,我瞭解了,謝謝你 ^_^
系統時間:2017-10-23 8:56:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!