如何在Progress 4GL中调用DLL获取WebService数据?附VB.net示例
在Progress 4GL中调用DLL实现WebService数据获取(对应VB.NET示例)
前提确认
你已通过程序集引用工具将目标DLL保存到工作目录,接下来按以下步骤实现:
1. 加载.NET程序集
使用ASSEMBLY LOAD语句加载对应DLL,若DLL在当前工作目录,直接写文件名即可:
ASSEMBLY LOAD "TaxWiseProxy.dll".
2. 创建代理类实例
通过CREATE语句实例化TaxWiseProxy类,按构造函数要求传入serviceURI、username、password参数:
DEFINE VARIABLE oClient AS CLASS TaxWiseProxy NO-UNDO. CREATE TaxWiseProxy (INPUT "https://webservice.net/Basic.svc", INPUT "myusername", INPUT "aPassword") oClient.
3. 调用方法并处理返回值
调用GetTitle方法获取数据,用字符型变量接收返回结果:
DEFINE VARIABLE cResponse AS CHARACTER NO-UNDO. cResponse = oClient:GetTitle("12-34567").
4. 异常处理
使用Progress的CATCH块捕获调用过程中的异常:
DEFINE VARIABLE oException AS CLASS System.Exception NO-UNDO. DO ON ERROR UNDO, THROW: CREATE TaxWiseProxy (INPUT "https://webservice.net/Basic.svc", INPUT "myusername", INPUT "aPassword") oClient. cResponse = oClient:GetTitle("12-34567"). MESSAGE "返回结果:" cResponse VIEW-AS ALERT-BOX INFORMATION. CATCH oException AS System.Exception: MESSAGE "调用出错:" oException:Message VIEW-AS ALERT-BOX ERROR. END CATCH.
完整示例代码
/* 加载.NET程序集 */ ASSEMBLY LOAD "TaxWiseProxy.dll". DEFINE VARIABLE oClient AS CLASS TaxWiseProxy NO-UNDO. DEFINE VARIABLE cResponse AS CHARACTER NO-UNDO. DEFINE VARIABLE oException AS CLASS System.Exception NO-UNDO. DO ON ERROR UNDO, THROW: /* 创建代理实例 */ CREATE TaxWiseProxy (INPUT "https://webservice.net/Basic.svc", INPUT "myusername", INPUT "aPassword") oClient. /* 调用WebService方法 */ cResponse = oClient:GetTitle("12-34567"). /* 输出结果 */ MESSAGE "获取到的Title:" cResponse VIEW-AS ALERT-BOX INFORMATION. CATCH oException AS System.Exception: /* 异常处理 */ MESSAGE "调用失败:" oException:Message + CHR(10) + "异常详情:" oException:StackTrace VIEW-AS ALERT-BOX ERROR. END CATCH. /* 释放资源(可选) */ IF VALID-HANDLE(oClient) THEN DELETE OBJECT oClient.
注意事项
- 若DLL不在工作目录,需指定完整路径(如
"C:\YourPath\TaxWiseProxy.dll") - Progress不支持构造函数命名参数,需严格按参数顺序传递
- .NET的
String类型对应Progress的CHARACTER类型,需确保变量类型匹配
内容的提问来源于stack exchange,提问作者Luke Taylor
相关产品推荐
相关产品推荐

