自从2周(02/10)以来,我通过eBay_Service .NET SDK(v967)调用API方法CompleteSale
时出现问题。
当ERP尝试发送一些关于一个订单的更新信息时,它会收到以下异常:
基础连接已关闭,发送
时发生意外错误
所以我没有得到API的回复。
有不止一件奇怪的事情:
ERP正在开发中(OpenGL),所以我无法解决设置" KeepAlive" to" false&#34 ;,明确设置证书(Tsl1.1 | Tsl1.2)或在.net端进行其他干预。我错了,可以从源代码中完成SDK。
答案 0 :(得分:0)
我已经检查了api服务器上的安全协议,发现了" SSL3"不再支持,而.NET 2.0中ServicePointManager.SecurityProtocol的默认值为SSL3。
我通过在" eBayXmlAPIInterfaceService"中添加此修补程序解决了这个问题。 SDK中的类源代码:
//768 = Tsl1.1, 3070 = Tsl1.2
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072 |
(SecurityProtocolType)768;
HttpWebRequest http = (HttpWebRequest) WebRequest.Create(this.Url);
http.Method = "POST";
http.ContentType = "text/xml";
http.ContentLength = data.Length;
http.KeepAlive = false;
微软可能已发布修补程序以解决此问题,但服务器自2015年以来未经更新。
此外,我已经在我们用来获取/发布请求的程序中复制了ABL应用程序中的.net代码:
DEF VAR w-tsl10 AS System.Net.SecurityProtocolType
w-tsl10 = CAST(System.Enum:ToObject(PROGRESS.Util.TypeHelper:GetType("System.Net.SecurityProtocolType":U), 192), System.Net.SecurityProtocolType).
ystem.Net.ServicePointManager:SecurityProtocol = w-tsl10.
答案 1 :(得分:0)
我正在使用betfair api并遇到此问题。经过研究,我发现了
System.Net.ServicePointManager.Expect100Continue = true;
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;