网络公司与检测中心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.id和receive_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;
}
}
}