联系
我们

工作日 9:00-18:00

13632615190

通过API提交数据

E6支持通过API接口提交数据。

1、配置:在web.config中增加这几个配置项:API.Enabled、API.UserID、API.AESKey

image.png

API.Enabled:value为“true”时API才能调用,为空或者其他值都不会启用API;

API.UserID:表示调用API的用户ID,通过API提交的新增数据的__FK_Employee_CreateUser字段值就是这里填写的值,可以从__Employee__表中查询获得,默认为“api”;

API.AESKey:表示提交的数据的AES加解密的key,如果不填则支持提交的数据明文传输(如果是局域网内应用可以不填);


2、接口地址:

提交数据:实现数据新增或者修改:

接口地址:http://ip地址/站点名/api.action?act=submit&billid=单据编号

地址说明:其中IP地址为您服务器实际的IP地址和端口号,站点名为您实际的Web服务名,单据编号为您要调用接口提交数据的单据编号。


查询数据:根据条件查询表单数据:

接口地址:http://ip地址/站点名/api.action?act=query&billid=单据编号

地址说明:其中IP地址为您服务器实际的IP地址和端口号,站点名为您实际的Web服务名,单据编号为您要调用接口提交数据的单据编号。


3、数据格式:

数据格式为JSON格式,可以通过下面方式从浏览器中获得某个表单的数据格式。以谷歌浏览器为例:

1)、进入要查看数据格式的表单,点击浏览器右上角的“:”按钮,“更多工具 - 开发者工具”(或者按F12,这基本上每个浏览器都支持);

image.png

2)、然后再出现的开发者工具栏中,选择Network(中文叫“网络”)页;

3)、在Network页的“过滤”输入框中输入“.action”:

image.png

4)、右键点击表单空白处,点击“重新加载框架”;

image.png

5)、重新加载框架后,在Network页中会出现read.action这个调用,如下图,点击后右侧的Response中拷贝出现的JSON就是我们表单的数据结构:

image.png

6)、拷贝出来的JSON就是我们表单提交或者读取的数据结构,您提交表单是参考这个进行提交,删除不需要的字段,不需要的子表即可。

7)、参考动图如下:

20250829-180849.gif

提交的数据和查询返回的数据格式相同,数据结构如下:

image.png

注意:上图中的__CreateDateTime__和__FK_Employee_CreateUser_这种可以不填的,这些字段是不能修改的,所以填了也没有意义。


调用示例:调用下面的C#方法,url表示上面的接口地址,json表示我们要提交的数据,如果是掉查询接口,则json参数表示查询条件。

public static string Post(string url, string json)
{
    try
    {
        System.Net.WebRequest webRequest = System.Net.WebRequest.Create(url);
        webRequest.ContentType = "application/json;charset=UTF-8";
        webRequest.Method = "POST";

        byte[] bytes = Encoding.UTF8.GetBytes(json);

        webRequest.ContentLength = bytes.Length;
        using (System.IO.Stream os = webRequest.GetRequestStream())
        {
            os.Write(bytes, 0, bytes.Length);
        }

        System.Net.WebResponse webResponse = webRequest.GetResponse();
        if (webResponse == null)
        {
            return null;
        }

        System.IO.StreamReader sr = new System.IO.StreamReader(webResponse.GetResponseStream(), System.Text.Encoding.UTF8);

        return sr.ReadToEnd().Trim();
    }
    catch (System.Net.WebException ex)
    {
        throw new Exception("获取返回值发生异常", ex);
    }

    return null;
}


4、查询条件:

提交数据时我们会提交JSON格式的数据,那么查询数据呢?我们同样以JSON格式提交查询条件,如下:

Condition:必须的,每个查询条件的节点名称都是Condition;

Field:查询条件字段名:

如果是本单据字段:则直接填字段名,比如下面样例中的__Name__和__NO__

如果是引用字段:则带上引用表单路径,比如客户表单引用了Employee,那么用Employee.__Name__(其中Employee表示引用的表单,__Name__表示引用的表单字段名),而引用的表单上可能还会引用表单,则可以使用:Employee\\Department.__Name__

Op:匹配操作符号:

=:表示“等于”查询;

<>:表示“不等于”查询;

>:表示“大于”查询,常用于日期,数字字段;

>=:表示“大于”查询,常用于日期,数字字段;

<:表示“小于”查询,常用于日期,数字字段;

<=:表示“小于等于”查询,常用于日期,数字字段;

LIKE:表示LIKE查询;

NOT LIKE:表示NOT LIKE查询;

IN:表示IN查询,则Value必须是逗号分隔的格式;

Value:查询条件值。

参考JSON格式如下:

{
    "Condition":[
        {"Field":"__Name__","Op":"LIKE","Value":"张"},
        {"Field":"__NO__","Op":"=","Value":"CUST0000000001"},
        {"Field":"Employee.__Name__","Op":"NOT LIKE","Value":"赵钱"},
        {"Field":"Employee\\Department.__Name__","Op": "=","Value": "总经办"}
     ]
}


查询条件的JSON格式同样可以通过浏览器的开发者模式下获得(按F12...):进入查询列表后,输入查询条件,在开发者模式(很多人也成为Debug模式下)下,进入Network页,然后过滤这里如上面的填“.action”后,点击查询,在出现的访问记录中找到readlist.action这一条访问记录并点击后,右侧Payload滚动到下方后可以看到Form Data,把里面的字符串拷贝出来后就是我们的查询条件的JSON格式了(但是这里会包括分页的Paging节点,而API不支持分页,所以建议去掉Paging节点)

image.png



附:API调用的C#样例如下:

E6APITest.zip