最近在做業務系統與EAS進行財務功能集成項目時,系統集成接口調用時出現以前未遇到過的問題
1. 項目環境
系統 | 技術平臺 | 系統版本 | 接口方式 |
---|---|---|---|
業務系統 | .net / C# | - | webservice |
EAS | java | V8.2 | webservice |
2. 問題描述
在業務系統通過visual studio服務引用功能引用eas webservice,例如:http://100.100.100.100:6888/ormrpc/services/EASLogin?wsdl
然後webservice調用示例代碼如下:
ConsoleApp2.EASLoginProxyService proxy = new ConsoleApp2.EASLoginProxyService();
ConsoleApp2.WSContext context = proxy.login("tanze", "", "eas", "A001", "L2", 0);
Console.WriteLine("sessionId : " + context.sessionId);
Console.ReadKey();
在執行webservice接口調用時,報錯: 基礎連接已經關閉: 連接被意外關閉。
3. 問題分析
金蝶的這個接口的http 1.1, C#引用服務自動生成的是http 1.0
由引用方和目標服務接口協議不一致,導到webservice調用失敗。
4. 解決方法
在調用webservice前設置
System.Net.ServicePointManager.Expect100Continue = false;
修改 http1.1 協議存在的問題
示例代碼如下:
System.Net.ServicePointManager.Expect100Continue = false;
ConsoleApplication8.EASLoginProxyService service = new ConsoleApplication8.EASLoginProxyService();
WSContext context = service.login("user", "password", "eas", "A001", "L2", 2, string.Empty);