luc*_*pes 7 delphi soap web-services com+ delphi-xe2
我有一个多用户COM +应用程序,需要在SOAP WebServices上发出多个请求.每个SOAP请求可能持续10到60秒(这不在我的控制之下).问题是,我永远不能同时发出超过2个请求.
例如,当我有3个并发请求时,第三个请求仅在第二个请求完成时才开始.我在控制台应用程序上观察了相同的行为(用于测试目的),向同一个WebService发出多个并发请求,我再次被限制为2个请求.
当我尝试使用另一种语言(C#)使用相同的WebServices时,同样的事情发生了,但是,在C#客户端上有一个属性可以解决问题:
System.Net.ServicePointManager.DefaultConnectionLimit
Run Code Online (Sandbox Code Playgroud)
当我增加该属性时,我可以保留我想要的任何数量的并发请求.Delphi上有类似的属性吗?
我正在使用WSDL导入器工具来使用Web服务(Delphi XE2).
Delphi使用Wininet.dll发出SOAP请求,IE使用相同的DLL.实际上记录了这种限制.
你有2个选择:
InternetSetOption
在SOAP调用之前使用:小代码示例(请注意,它不包括错误检查):
Const
INTERNET_OPTION_MAX_CONNS_PER_SERVER = 73;
INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER = 74;
var
MaxConnections : Integer;
begin
MaxConnections := 10; // adapt to your needs
InternetSetOption(Nil, INTERNET_OPTION_MAX_CONNS_PER_SERVER, @MaxConnections , SizeOf(MaxConnections ));
InternetSetOption(Nil, INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER, @MaxConnections , SizeOf(MaxConnections ));
// do SOAP call
end;
Run Code Online (Sandbox Code Playgroud)