You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 22:40:58