C# 发送xml报文到用友U8生成凭证系列二(基础代码)

本文介绍如何使用C#通过配置文件和基础代码向用友U8系统发送XML报文并生成凭证,涉及配置信息、路由及HTTP辅助类等关键技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C# 发送xml报文到用友U8生成凭证系列一(配置信息)
C# 发送xml报文到用友U8生成凭证系列二(基础代码)
C# 发送xml报文到用友U8生成凭证系列三(Modal代码)
C# 发送xml报文到用友U8生成凭证系列四(Biz代码)最终代码

上文我们详细讲解了u8voucher.xml、Web.config、U8EAI.asmx、EAIHandler.cs 等代码及xml报文格式及相关config配置等,接下来我们将讲解Config、Route、Common 目录下的类怎么编写的:

config目录下的文件:

appSetting.config代码:

这里是配置的用友U8的eai报文导入生成凭证的信息

http://192.168.110.21/u8eai/import.asp 根据你的用友U8安装的服务器IP来设置
<appSettings>
  <add key="url" value="http://192.168.110.21/u8eai/import.asp"/>
  <add key="encoding" value="utf-8"/>
  <add key="voucher" value="NC2U8.Biz.Convert.VoucherConvertor"/>
</appSettings>

U8Voucher.xsd  链接数据库 表

Route 目录下的代码:

Router.cs 代码:

using NC2U8.Biz.Convert;
using System;
using System.Collections.Generic;
using System.Web;

namespace NC2U8.Route
{
    public class Router
    {
        public IConvertor GetConvertor(string type)
        {
            string className = System.Configuration.ConfigurationManager.AppSettings[type];
            if (string.IsNullOrEmpty(className))
                throw new NotSupportedException("不存在的报文类型。传入类型:"+type);

            IConvertor convertor = Activator.CreateInstance(Type.GetType(className)) as IConvertor;
            return convertor;
        }
    }
}

Common 目录下的代码:

HttpHelper.cs 代码:

using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Web;

namespace NC2U8.Common
{
    public class HttpHelper
    {
        public static HttpWebResponse Post(string url,string data)
        {
            var request = WebRequest.Create(url) as HttpWebRequest;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            byte[] btData = Encoding.UTF8.GetBytes(data);
            request.ContentLength = btData.Length;
            using(var stream = request.GetRequestStream())
            {
                stream.Write(btData, 0, btData.Length);
            }
            return request.GetResponse() as HttpWebResponse;
        }

        public static string GetResponseContent(HttpWebResponse response, string encodingName)
        {
            byte[] buffer = new byte[4096];
            using (Stream stream = response.GetResponseStream())
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    int count = 0;
                    while ((count = stream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        ms.Write(buffer, 0, count);
                    }
                    Encoding ec = Encoding.GetEncoding(encodingName);
                    string content = ec.GetString(ms.ToArray());
                    return content;
                }
            }
        }
    }
}

Ok 这些代码写完,接下来下一篇文章将要讲解最重要的环节代码:怎么转换XML节点为U8凭证。


用友U9C系统中,应收核销接口的使用方法和开发文档通常涉及以下几个关键方面: 1. **接口功能概述**: 应收核销接口主要用于实现与系统外部的数据交互,支持将第三方系统或模块中的应收数据导入到U9C系统,并根据预设规则进行自动核销操作。该接口可以支持多种数据格式(如XML、JSON等),并提供校验机制以确保数据的准确性[^1]。 2. **接口调用流程**: 调用应收核销接口的基本流程包括: - 准备数据:按照接口规范整理应收单据信息,包括客户编号、应收金额、单据日期、核销条件等。 - 构建请求:构造符合接口要求的请求报文,通常包括请求头(Header)和请求体(Body)部分。 - 发送请求:通过HTTP/HTTPS协议向指定的接口地址发送请求。 - 接收响应:处理返回结果,包括成功状态码、失败原因、核销结果报告等信息[^1]。 3. **开发文档内容**: 开发文档一般包含以下内容: - 接口地址(URL) - 请求方式(GET/POST/PUT等) - 请求参数说明(必填项、可选项、数据类型) - 返回值结构及含义 - 示例代码(Java、Python、C#等语言示例) - 错误码定义及处理建议 4. **安全与权限控制**: 为保障数据安全,接口调用需进行身份认证,例如使用OAuth 2.0、Token令牌等方式。此外,还需配置相应的用户权限,确保只有授权人员才能执行应收核销相关操作[^1]。 5. **日志与异常处理**: 在调用过程中,应记录详细的调用日志以便追踪问题。对于异常情况,系统应具备重试机制和错误提醒功能,避免因网络中断或数据异常导致业务中断。 6. **测试与调试工具**: 建议使用Postman、SoapUI等工具对接口进行测试和调试。通过这些工具可以快速构建请求、查看响应结果,提升开发效率。 ### 示例代码(Python) 以下是一个简单的Python示例,展示如何通过requests库调用应收核销接口: ```python import requests import json url = "https://api.u9c.com/receivable/writeoff" headers = { "Content-Type": "application/json", "Authorization": "Bearer YOUR_ACCESS_TOKEN" } data = { "customerCode": "CUST001", "invoiceNo": "INV20231001", "amount": 5000.00, "writeoffDate": "2023-10-01", "writeoffRule": "AUTO" } response = requests.post(url, headers=headers, data=json.dumps(data)) print("Status Code:", response.status_code) print("Response Body:", response.json()) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值