泛微OAwebservice接口附件上传

<soapenv:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:web=“http://webservices.workflow.weaver”>
soapenv:Header/
soapenv:Body
web:doCreateWorkflowRequest
web:in0
<WorkflowRequestInfo>
<requestName>工单升级</requestName>
<requestLevel>0</requestLevel>
<messageType>0</messageType>
<workflowBaseInfo>
<workflowId>66043</workflowId>
</workflowBaseInfo>
<creatorId>1100</creatorId>
<canView>true</canView>
<canEdit>true</canEdit>
<workflowMainTableInfo>
<requestRecords>
<weaver.workflow.webservices.WorkflowRequestTableRecord>
<recordOrder>0</recordOrder>
<workflowRequestTableFields>

                &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;sqrq&lt;/fieldName&gt;
                    &lt;fieldValue&gt;2023-03-15&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;

                 &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;sqr&lt;/fieldName&gt;
                    &lt;fieldValue&gt;1100&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;
                
                &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;gddh&lt;/fieldName&gt;
                    &lt;fieldValue&gt;QCGS22R003-1&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;
                
                &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;yzmc&lt;/fieldName&gt;
                    &lt;fieldValue&gt;6016&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;
                
                &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;sblx&lt;/fieldName&gt;
                    &lt;fieldValue&gt;AAA&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;

                
                &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;ldmc&lt;/fieldName&gt;
                    &lt;fieldValue&gt;AAA&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;
                
                &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;cpmc&lt;/fieldName&gt;
                    &lt;fieldValue&gt;AAA&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;
                &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;zdmc&lt;/fieldName&gt;
                    &lt;fieldValue&gt;63328aa598ab010001037743&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;
                &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;cd&lt;/fieldName&gt;
                    &lt;fieldValue&gt;8041&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;
                
                &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;gzms&lt;/fieldName&gt;
                    &lt;fieldValue&gt;010&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;
                
                &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;jjfs&lt;/fieldName&gt;
                    &lt;fieldValue&gt;641166a0711c2e00012782c3&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;
                
                &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;cpx&lt;/fieldName&gt;
                    &lt;fieldValue&gt;0&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;
                
                &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;xccljl&lt;/fieldName&gt;
                    &lt;fieldValue&gt;C001&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;

                
                &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;jjxq&lt;/fieldName&gt;
                    &lt;fieldValue&gt;AAA&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;

                
                &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;xqsj&lt;/fieldName&gt;
                    &lt;fieldValue&gt;2023-03-26 &lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;
                
                &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;mqylwt&lt;/fieldName&gt;
                    &lt;fieldValue&gt;1111&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;

                
                &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;sfzjsjyf&lt;/fieldName&gt;
                    &lt;fieldValue&gt;0&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;

                
               &lt;weaver.workflow.webservices.WorkflowRequestTableField&gt;
                    &lt;fieldName&gt;fj&lt;/fieldName&gt;
                     &lt;fieldType&gt;http:aaa.jpg|http:bbb.jpg&lt;/fieldType&gt;
                    &lt;fieldValue&gt;https://img1.baidu.com/it/u=413643897,2296924942&amp;amp;fm=253&amp;amp;fmt=auto&amp;amp;app=138&amp;amp;f=JPEG?w=800&amp;amp;h=500t;||https://img1.baidu.com/it/u=413643897,2296924942&amp;amp;fm=253&amp;amp;fmt=auto&amp;amp;app=138&amp;amp;f=JPEG?w=800&amp;amp;h=500&lt;/fieldValue&gt;
                    &lt;isView&gt;true&lt;/isView&gt;
                    &lt;isEdit&gt;true&lt;/isEdit&gt;
                    &lt;isMand&gt;true&lt;/isMand&gt;
                &lt;/weaver.workflow.webservices.WorkflowRequestTableField&gt;
                
            &lt;/workflowRequestTableFields&gt;
        &lt;/weaver.workflow.webservices.WorkflowRequestTableRecord&gt;
    &lt;/requestRecords&gt;
&lt;/workflowMainTableInfo&gt;

</WorkflowRequestInfo>
</web:in0>
web:in11100</web:in1>
</web:doCreateWorkflowRequest>
</soapenv:Body>
</soapenv:Envelope>

### 关于OA系统API接口实现附件管理 #### 1. OA系统接口文档概述 Ecology8系统的接口文档提供了详细的接口配置指南和技术要求,适用于具有Web Service开发能力和系统集成需求的客户[^1]。此文档不仅涵盖了接口配置的方法,还包含了具体的调用示例以及注意事项。 对于附件管理的功能,虽然官方文档未单独提及附件上传/下载的具体实现细节,但从其整体框架来看,可以通过工作流接口或其他自定义接口来完成此类操作。具体可参考文档中的“接口调用示例”部分,其中可能涉及文件处理的相关方法。 --- #### 2. OA C# 调用 WebAPI 功能实现 在C#环境下调用OA的WebAPI功能时,可以按照以下逻辑实现附件管理的操作: ##### (1) 初始化接口并获取Token 为了访问OA的API服务,首先需要通过认证机制获取有效的Token。以下是获取Token的代码示例: ```csharp using System.Net.Http; using Newtonsoft.Json; public async Task<string> GetAccessToken(string clientId, string clientSecret) { var url = "https://your-oa-server/api/oauth/token"; using (var httpClient = new HttpClient()) { var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("grant_type", "client_credentials"), new KeyValuePair<string, string>("client_id", clientId), new KeyValuePair<string, string>("client_secret", clientSecret) }); HttpResponseMessage response = await httpClient.PostAsync(url, content); string responseBody = await response.Content.ReadAsStringAsync(); dynamic tokenResponse = JsonConvert.DeserializeObject(responseBody); return tokenResponse.access_token; } } ``` 上述代码实现了基于OAuth协议的身份验证过程,并返回可用的Access Token[^2]。 --- ##### (2) 拼装Headers 在每次请求前,需设置必要的HTTP头部信息以携带Token和其他元数据: ```csharp private void SetRequestHeaders(HttpClient client, string accessToken) { client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken}"); client.DefaultRequestHeaders.Add("Content-Type", "application/json"); } ``` --- ##### (3) 文件上传接口 针对附件上传的需求,通常会有一个专门的API端点用于接收二进制文件数据。以下是一个简单的文件上传示例: ```csharp public async Task<bool> UploadFile(string filePath, string uploadEndpoint, string accessToken) { using (var httpClient = new HttpClient()) { SetRequestHeaders(httpClient, accessToken); MultipartFormDataContent form = new MultipartFormDataContent(); byte[] fileBytes = File.ReadAllBytes(filePath); ByteArrayContent bytes = new ByteArrayContent(fileBytes); form.Add(bytes, "file", Path.GetFileName(filePath)); HttpResponseMessage response = await httpClient.PostAsync(uploadEndpoint, form); return response.IsSuccessStatusCode; } } ``` 在此代码中,`uploadEndpoint` 是指向服务器上的文件上传接口路径。 --- ##### (4) 文件下载接口 同样地,文件下载也可以通过指定URL的方式实现。下面展示了一个基本的文件下载函数: ```csharp public async Task<byte[]> DownloadFile(string downloadUrl, string accessToken) { using (var httpClient = new HttpClient()) { SetRequestHeaders(httpClient, accessToken); HttpResponseMessage response = await httpClient.GetAsync(downloadUrl); if (!response.IsSuccessStatusCode) throw new Exception($"Failed to download file: {response.ReasonPhrase}"); return await response.Content.ReadAsByteArrayAsync(); } } ``` 以上代码片段展示了如何利用HttpClient库执行GET请求并将响应体解析为字节数组形式保存到本地磁盘。 --- #### 3. 注意事项 - **权限控制**:确保当前账户拥有足够的权限来进行文件读写操作。 - **错误处理**:实际项目中应加入更完善的异常捕获与日志记录机制。 - **性能优化**:大文件传输场景下考虑分片上传策略或者压缩算法的应用。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值