2016-08-03 13 views
0

我只是在這裏的一些用戶的幫助下將Indy 10移到了Delphi 5中。我用使用後,是什麼取代了Indy TIdHTTP.DoRequest?

HTTP.DoRequest(hmPost,URL,ssSource,ssResult);//This will not disconnect if already connected like the post

由於DoRequest是不再可用,如果我嘗試使用此代碼:

HTTP.Post(URL,ssSource,ssResult); 

正常工作,除非我嘗試後內再次像30秒。如果我這樣做,我得到這個錯誤:

ERROR: Socket Error # 10048. Address already in use. 

DoRequest從來沒有造成這一點。不知道如何正確替換它。

+1

'DoRequest()'仍然存在,它只是'受保護的'。除非您嘗試發送自定義HTTP命令,否則不需要直接調用它。爲了避免'Post()'斷開連接,請確保'HTTPOptions'屬性中的'hoKeepOrigProtocol'標誌已啓用。至於你的套接字錯誤,請提供一個[最小,完整和可驗證的例子](http://stackoverflow.com/help/mcve)來證明這個問題。 –

+0

查看我的日誌後,我認爲問題是所有的帖子都是在一個線程內完成的,我最多可以同時運行3個線程。線程2和3總是得到一個套接字錯誤#10048。當線程#1完成時,它會啓動下一篇文章。使用Indy 9和DoRequest()。 –

+0

你是想在所有線程中使用相同的'TIdHTTP'對象,還是每個都有自己的'TIdHTTP'對象?您是否使用「BoundIP」和/或「BoundPort」屬性? –

回答

0

雷米Lebeau,我想感謝你。我完全刪除了HTTP.BoundIP,現在沒有套接字錯誤,這意味着所有3個線程現在都在同一時間真正在自己的線程中運行。感謝它。