asp.net 使用json进行api交互数据

网络公司与检测中心API接口定义

网络公司发送到检测中心接口json格式:

{

    "api_来源": "网络",

    "api_id": "wlgs_api",

    "api_token": "12345678",

    "委托单id": 1234,

    "代码": "zyb",

    "编号": "W202100582",

    "名称": "GPON 终端",

    "型号": "DG8045-70",

    "委托单文件": "http://xxx.com/sheet/abc.pdf",

    "委托单位": "四川XXXX科技公司",

    "委托部门": "质量部",

    "地址": "四川绵阳",

    "委托人": "张三",

    "电话": "13012345678",

    "数量": "10",

    "附件": ""

}

回复格式:

{

    "id": 1234,

    "result": "OK"

}

检测中心发送到网络公司接口json格式:

{

    "委托单id": 1,

    "委托单状态": "检测完成",

    "更新时间": "2022-02-28T13:48:25.0475182+08:00"

}

回复格式:

{

    "id": 1,

    "result": "OK"

}

示例代码

网络公司发送委托单到检测中心

using System;

public partial class api_api_sent : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

      

    }

    public class Data_Json

    {

        public string api_来源 { get; set; } //api委托的来源,如"网络检测系统"

        public string api_id { get; set; }  //用于身份认证的用户名

        public string api_token { get; set; } //用于身份认证的密码

        public int 委托单id { get; set; }  //委托单在原系统中的唯一标识,用于后续返回委托单的进度状态

        public string 代码 { get; set; }  //实际委托人代码

        public string 编号 { get; set; } //委托产品编号

        public string 名称 { get; set; } //委托产品编号

        public string 型号 { get; set; } //委托产品编号

        public string 委托单文件 { get; set; } //委托单文件

        public string 委托单位 { get; set; }

        public string 委托部门 { get; set; }

        public string 地址 { get; set; }

        public string 委托人 { get; set; } //委托人姓名

        public string 电话 { get; set; } //委托人姓名

        public string 数量 { get; set; } //委托产品数量

        public string 附件 { get; set; } //委托产品附件

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

        Data_Json data_json = new Data_Json();

        data_json.api_来源 = "网络";

        data_json.api_id = "wlgs_api";

        data_json.api_token = "12345678";

        data_json.委托单id = 1234;

        data_json.代码 = "zyb";

        data_json.编号 = "W202100582";

        data_json.名称"GPON 终端";

        data_json.型号 = "DG8045-70";

        data_json.委托单文件 = "http://xxx.com/sheet/abc.pdf";

        data_json.委托单位 = "四川XXXX科技公司";

        data_json.委托部门 = "质量部";

        data_json.地址 = "四川绵阳";

        data_json.委托人 = "张三";

        data_json.电话 = "13012345678";

        data_json.数量 = "10";

        data_json.附件 = "";

        string url = "http://test.com/api/receive_sheet.ashx";

        string str_post = Newtonsoft.Json.JsonConvert.SerializeObject(data_json);

        //{"api_来源":"网络","api_id":"wlgs_api","api_token":"12345678","委托单id":1234,"代码":"zyb","编号":"W202100582","名称":"GPON 终端","型号":"DG8045-70","委托单文件":"http://xxx.com/sheet/abc.pdf","委托单位":"四川XXXX科技公司","委托部门":"质量部","地址":"四川绵阳","委托人":"张三","电话":"13012345678","数量":"10","附件":""}

        this.Label1.Text = PostData(url, str_post);

    }

    private string PostData(string url, string json)

    {

        string result = string.Empty;

        byte[] buffer = new byte[0];

        buffer = System.Text.Encoding.Default.GetBytes(json);

        System.Net.HttpWebRequest request = System.Net.WebRequest.Create(url) as System.Net.HttpWebRequest;

        request.Method = "POST";

        request.ContentType = "application/x-www-form-urlencoded";

        request.ContentLength = buffer.Length;

        using (System.IO.Stream writer = request.GetRequestStream())

        {

            writer.Write(buffer, 0, buffer.Length);

            writer.Flush();

        }

        using (System.Net.HttpWebResponse response = request.GetResponse() as System.Net.HttpWebResponse)

        {

            using (System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream(),System.Text.Encoding.Default))

            {

                result = reader.ReadToEnd();

            }

        }

        return result;

    }

}

检测中心处理页代码:

<%@ WebHandler Language="C#" Class="receive_sheet" %>

using System;

using System.Web;

public class receive_sheet : IHttpHandler {

    public void ProcessRequest(HttpContext context)

    {

        //接收发送来的数据

        System.IO.StreamReader sr = new System.IO.StreamReader(context.Request.InputStream, System.Text.Encoding.Default); //此处指定编码格式才能正常处理中文

        string jsonText = sr.ReadToEnd();

        //{"id":"1234","代码":"zyb","编号":"W202100582","名称":"GPON 终端","型号":"DG8045-70","委托单文件":"http://xxx.com/sheet/abc.pdf","委托单位":"四川XXXX科技公司","委托部门":"质量部","地址":"四川绵阳","委托人":"张三","电话":"13012345678","数量":"10","附件":""}

        Newtonsoft.Json.Linq.JObject jObject = new Newtonsoft.Json.Linq.JObject();        //新建 操作对象

        Data_Json data_json = Newtonsoft.Json.JsonConvert.DeserializeObject<Data_Json>(jsonText);

        //使用receive_json.idreceive_json.name进行后续逻辑处理

        //保存数据到sql server 数据库

        string sql = @"INSERT INTO [dbo].[客户_电子委托]

           ([api_来源]

           ,[api_id]

           ,委托单id

           ,[代码]

           ,[编号]

           ,[名称]

           ,[型号]

           ,[委托单文件]

           ,[委托单位]

           ,[委托部门]

           ,[地址]

           ,[委托人]

           ,[电话]

           ,[数量]

           ,[附件]

      )

     VALUES

           (@api_来源

           ,@api_id

           ,@委托单id

           ,@代码

           ,@编号

           ,@名称

           ,@型号

           ,@委托单文件

           ,@委托单位

           ,@委托部门

           ,@地址

           ,@委托人

           ,@电话

           ,@数量

           ,@附件)";

        System.Data.SqlClient.SqlParameter[] paras ={

             new System.Data.SqlClient.SqlParameter("@api_来源", data_json.api_来源),

               new System.Data.SqlClient.SqlParameter("@api_id", data_json.api_id),

                 new System.Data.SqlClient.SqlParameter("@委托单id", data_json.委托单id),

                 new System.Data.SqlClient.SqlParameter("@代码", data_json.代码),

                   new System.Data.SqlClient.SqlParameter("@编号", data_json.编号),

                     new System.Data.SqlClient.SqlParameter("@名称", data_json.名称),

                       new System.Data.SqlClient.SqlParameter("@型号", data_json.型号),

                         new System.Data.SqlClient.SqlParameter("@委托单文件", data_json.委托单文件),

                 new System.Data.SqlClient.SqlParameter("@委托单位", data_json.委托单位),

             new System.Data.SqlClient.SqlParameter("@委托部门",  data_json.委托部门),

              new System.Data.SqlClient.SqlParameter("@地址", data_json.地址),

                         new System.Data.SqlClient.SqlParameter("@委托人", data_json.委托人),

                 new System.Data.SqlClient.SqlParameter("@电话", data_json.电话),

                 new System.Data.SqlClient.SqlParameter("@数量", data_json.数量),

             new System.Data.SqlClient.SqlParameter("@附件",  data_json.附件),

              };

       // Zyb_MsSql_Helper.ExecuteQuery(sql, paras);

        //context.Response.ContentType = "text/plain";

        context.Response.Write(jsonText); //json:{"api_来源":"网络","api_id":"wlgs_api","api_token":"12345678","委托单id":1234,"代码":"zyb","编号":"W202100582","名称":"GPON 终端","型号":"DG8045-70","委托单文件":"http://xxx.com/sheet/abc.pdf","委托单位":"四川XXXX科技公司","委托部门":"质量部","地址":"四川绵阳","委托人":"张三","电话":"13012345678","数量":"10","附件":""}{"id":1234,"result":"OK"}

        //context.Response.Write("接件单接收成功:"+data_json.委托单id);

        context.Response.ContentType = "text/json";

        Reply reply = new Reply();

        reply.id = data_json.委托单id;

        reply.result = "OK";

        string str = Newtonsoft.Json.JsonConvert.SerializeObject(reply);

        context.Response.Write(str); //输出 {"id":1234,"result":"OK"}

    }

    public class Data_Json

    {

        public string api_来源 { get; set; } //api委托的来源,如"网络检测系统"

        public string api_id { get; set; }  //用于身份认证的用户名

        public string api_token { get; set; } //用于身份认证的密码

        public int 委托单id { get; set; }  //委托单在原系统中的唯一标识,用于后续返回委托单的进度状态

        public string 代码 { get; set; }  //实际委托人代码

        public string 编号 { get; set; } //委托产品编号

        public string 名称 { get; set; } //委托产品编号

        public string 型号 { get; set; } //委托产品编号

        public string 委托单文件 { get; set; } //委托单文件

        public string 委托单位 { get; set; }

        public string 委托部门 { get; set; }

        public string 地址 { get; set; }

        public string 委托人 { get; set; } //委托人姓名

        public string 电话 { get; set; } //委托人姓名

        public string 数量 { get; set; } //委托产品数量

        public string 附件 { get; set; } //委托产品附件

    }

    public class Reply{

        public int id { get; set; }

        public string result { get; set; }

    }

    public bool IsReusable {

        get {

            return false;

        }

    }

}

检测中心更新委托单状态到网络公司

using System;

public partial class api_api_update_sheet : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

        Sheet_Status sheet_status = new Sheet_Status();

        sheet_status.委托单id = 1;

        sheet_status.委托单状态 = "检测完成"//待检测,检测中,检测完成,待审核,待复核,待批准,报告完成

        sheet_status.更新时间 = DateTime.Now;

        string url = "http://test.com/api/api_update_sheet.ashx"//此处更新为网络公司系统api地址

        string str_post = Newtonsoft.Json.JsonConvert.SerializeObject(sheet_status);

        //{"委托单id":1,"委托单状态":"检测完成","更新时间":"2022-02-28T13:48:25.0475182+08:00"}

        this.Label1.Text = PostData(url, str_post);

    }

   

    class Sheet_Status {

        public int 委托单id { get; set; }  //委托单在原系统中的唯一标识,用于后续返回委托单的进度状态

        public string 委托单状态 { get; set; }

        public DateTime 更新时间 { get; set; }

    }

    private string PostData(string url, string json)

    {

        string result = string.Empty;

        byte[] buffer = new byte[0];

        buffer = System.Text.Encoding.Default.GetBytes(json);

        System.Net.HttpWebRequest request = System.Net.WebRequest.Create(url) as System.Net.HttpWebRequest;

        request.Method = "POST";

        request.ContentType = "application/x-www-form-urlencoded";

        request.ContentLength = buffer.Length;

        using (System.IO.Stream writer = request.GetRequestStream())

        {

            writer.Write(buffer, 0, buffer.Length);

            writer.Flush();

        }

        using (System.Net.HttpWebResponse response = request.GetResponse() as System.Net.HttpWebResponse)

        {

            using (System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream(), System.Text.Encoding.Default))

            {

                result = reader.ReadToEnd();

            }

        }

        return result;

    }

}

网络公司系统接收页示例代码:

<%@ WebHandler Language="C#" Class="api_update_sheet" %>

using System;

using System.Web;

public class api_update_sheet : IHttpHandler

{

    public void ProcessRequest(HttpContext context)

    {

        //context.Response.ContentType = "text/plain";

        //接收发送来的数据

        System.IO.StreamReader sr = new System.IO.StreamReader(context.Request.InputStream, System.Text.Encoding.Default); //此处指定编码格式才能正常处理中文

        string jsonText = sr.ReadToEnd();

        context.Response.Write(jsonText);

        //{"委托单id":1,"委托单状态":"检测完成","更新时间":"2022-02-28T13:48:25.0475182+08:00"}

        Newtonsoft.Json.Linq.JObject jObject = new Newtonsoft.Json.Linq.JObject();        //新建 操作对象

        Sheet_Status sheet_status = Newtonsoft.Json.JsonConvert.DeserializeObject<Sheet_Status>(jsonText);

        //更新数据到sql server 数据库

        string sql = @"update _api接件单 set 委托单状态=@委托单状态,更新时间=@更新时间 where id=@委托单id";

        System.Data.SqlClient.SqlParameter[] paras ={

             new System.Data.SqlClient.SqlParameter("@委托单状态", sheet_status.委托单状态),

               new System.Data.SqlClient.SqlParameter("@更新时间", sheet_status.更新时间),

                new System.Data.SqlClient.SqlParameter("@委托单id", sheet_status.委托单id),

              };

        Zyb_MsSql_Helper.ExecuteQuery(sql, paras);

        //回复处理结果

        context.Response.ContentType = "text/json";

        Reply reply = new Reply();

        reply.id = sheet_status.委托单id;

        reply.result = "OK"//OK 其它出错信息

        string str = Newtonsoft.Json.JsonConvert.SerializeObject(reply);

        context.Response.Write(str); //输出 {"id":1,"result":"OK"}

    }

    class Sheet_Status

    {

        public int 委托单id { get; set; }  //委托单在原系统中的唯一标识,用于后续返回委托单的进度状态

        public string 委托单状态 { get; set; }

        public DateTime 更新时间 { get; set; }

    }

    public class Reply

    {

        public int id { get; set; }

        public string result { get; set; }

    }

    public bool IsReusable

    {

        get

        {

            return false;

        }

    }

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zybpub

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值