公司有個老業務系統,用的是delphi6開發。需要呼叫webservice,但發現呼叫超時30秒彈出例外的問題。
網上查詢,說delphi7的THTTPRIO控制元件設定超時屬性就行了。但delphi6沒有這個屬性,只能從底層修改了。
步驟:
1.打開delphi的VCL 原始碼,找到SOAPHTTPTrans.pas檔案,把這個檔案拷到專案工程檔案的目錄,并加到工程中。這樣Delphi源檔案修改后才能夠生效。
2.找到procedure THTTPReqResp.Connect(Value: Boolean);行
3.寫義一個變數:
Timeout:DWORD;
4.在 FInetRoot := InternetOpen(PChar(FAgent), AccessType, PChar(FProxy), PChar(FProxyByPass), 0);代碼前添加如下代碼行:
//設定10分鐘超時,10分鐘一般夠用了。
Timeout:=600000;
InternetSetOption(nil, INTERNET_OPTION_RECEIVE_TIMEOUT ,
@Timeout, sizeof(Timeout));
4.重新編譯專案,運行程式。以后webservice就不會受限于30秒超時報例外的問題了!
uj5u.com熱心網友回復:

uj5u.com熱心網友回復:
非常好,用delphi6搞社保介面,糾結了好久,終于解決問題了,非常感謝樓主啊
uj5u.com熱心網友回復:
糾結了好久,終于解決問題了,非常感謝樓主啊
uj5u.com熱心網友回復:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/76081.html
標籤:網絡通信/分布式開發
上一篇:求教sql如何建設索引
下一篇:拼圖小游戲
