本文档提供了使用用友U9系统的接口调用实例,详细解释了如何通过API进行数据交互和系统集成,适用于开发者和技术人员参考学习。
### 用友U9接口调用详解
#### 一、概述
用友U9作为一款先进的企业管理软件,提供了丰富的接口供外部系统集成使用。本段落档将详细介绍三种不同的接口调用方式:旧ISV方式、新ISV方式以及轻量级服务方式。这三种方法在技术实现上有一定的差异,但其目的都是为了更好地满足不同场景下的集成需求。
#### 二、旧ISV方式
**定义:**
旧ISV方式是指通过创建服务项目,并将服务属性设置为非新ISV(即False),从而实现的服务接口调用方式。该方法主要适用于.NET Framework 2.0环境下的开发。
**部署步骤:**
1. **执行元数据脚本:** 使用提供的元数据脚本来生成.SVC文件。
2. **部署文件:** 将生成的.SVC文件放置于`..portalServices`目录下,并在同一目录创建与之同名的.config文件,其内容如下:
```xml
```
其中`name`节点的值需与.SVC文件中的对应值一致,而`contract`则为.SVC文件的名称。
**调用方式:**
- **Web服务引用:** 可以通过添加Web服务引用或者使用SvcUtil工具生成代理类的方式来调用。
- **注意事项:** 如果使用Web服务引用,在为Bool类型、整型类型、Decimal类型、Date类型等赋值时,需要确保`XXXX Specified`字段为true,这样赋值才能生效。
- **示例代码:**
```csharp
创建生产领料单接口调用示例
var url = http:localhostU9ServicesUFIDA.U9.ISV.MO.ICreateIssue4External.svc;
特别注意:调用上下文为Object类型,需要拼接key-value值
EnterpriseID、OrgID、UserID必须提供正确的值
```
#### 三、新ISV方式
**定义:**
新ISV方式与旧ISV方式相似,但在服务属性设置上有所不同,需要将其设置为新ISV(即True)。该方法同样适用于.NET Framework 2.0环境下的开发。
**部署步骤:**
与旧ISV方式相同。
**调用方式:**
- **添加服务引用:** 新ISV方式支持通过添加服务引用的方式进行调用,参数赋值更为直观。
- **上下文赋值:**
```csharp
var isv = new XXX.ISVContext();
isv.EntCode = 007; //企业编码
isv.OrgCode = 1001; //组织编码
isv.UserCode = admin; //用户编码
```
- **注意事项:** 新ISV方式虽然参数赋值更为方便,但无法直接获取后台抛出的具体错误信息。
#### 四、轻量级服务
**定义:**
轻量级服务是一种基于Web API标准接口的调用方法,支持跨平台、跨语言调用,传输效率相对较高。这种方式适用于.NET Framework 4及以上版本。
**部署步骤:**
1. **开发过程:** 轻量级服务的开发过程与标准接口类似。
2. **部署文件:** 将.SVC文件部署至`PortalRestServices`目录下。
**调用方式:**
- **PostGet请求:** 外部系统可以直接通过HTTP PostGet方法调用轻量级服务。
- **示例代码:**
```csharp
var url = http:localhostU9RestServicesUFIDA.U9.ISV.Mobile.MO.ICreateRcvRptDocCost.svcDo;
var request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
设置请求头和请求体
```
#### 五、总结
通过以上介绍,我们可以看到用友U9提供了多种接口调用方法来适应不同的应用场景和技术栈。选择合适的接口调用方式对于提高系统的集成性和可维护性至关重要。开发者可以根据实际需求选择最合适的调用方式,并遵循相应的部署和调用步骤,以实现高效稳定的集成效果。