天天进步2015 2024-02-29 19:29 采纳率: 60%
浏览 18
已结题

C#提交json字符串给http服务器

有两个接口:

url: http:xxx/api/1
{
    "Header": {
        "sMesUser": "JXYD",
        "sLanguage": "S",
        "sFactoryNo": "0",
        "sUserNo": "sa",
        "sClientIp": "127.0.0.1",
        "sInterfaceType": "TIMS_CHECK_LOTCARD_CARRIER_SN_STATION"
    },
    "Body": {
        "data": [{
            "SN": "",
            "TYPE": "PANEL_SN",
            "CARRIER_NO": "",
               "LOTCARD_NO": "",
                     "EQUIPMENT_NO": "",
            "TERMINAL_NO": "",
            "STATUS": "OK",
            "EQUIPCODE": "",
            "PRO_NAME": "",
              "PRO_UPDATE_DATE": "2024-01-02",
                    "PRESSURE_VALUE":"12",
            "PRESSING_DATE":"2024-01-02",
            "TEMPERATURE":"20"
              "IS_CHECK_FEED_MATERIAL": "Y",
              "IS_CHECK_STATION": "Y"
        }]
    }
另一个:
url: http:xxx/api/2
{
    "Header": {
        "sMesUser": "JXYD",
        "sLanguage": "S",
        "sFactoryNo": "0",
        "sUserNo": "sa",
        "sClientIp": "127.0.0.1",
        "sInterfaceType": "TIMS_LOTCARD_CARRIER_SN_STATION"
    },
    "Body": {
        "data": [{
            "SN": "",
            "TYPE": "PANEL_SN",
            "CARRIER_NO": "",
            "LOTCARD_NO": "",
                     "EQUIPMENT_NO": "",
            "TERMINAL_NO": "",
            "STATUS": "OK",
            "EQUIPCODE": "",
            "PRO_NAME": "",
            "PRO_UPDATE_DATE": "2024-01-02",
                     "PRESSURE_VALUE":"12",
              "PRESSING_DATE":"2024-01-02",
              "TEMPERATURE":"20"
                      "IS_DEDUCT":"Y",
            "Detail": [{
                "FID": "1",
                "QTY": "10"
            }, {
                "FID": "2",
                "QTY": "11"
            }]
}

都是Post请求。
参考下面的代码写代码:

 userInfo.EmployeeID = txtEmployeeID.Text;
            userInfo.DeviceNumber = txtDeviceNumber.Text;
            userInfo.ProjectCode = txtProjectCode.Text;
            userInfo.ComputerID = txtComputerID.Text;
            userInfo.StationCode = txtStationCode.Text;
            userInfo.LineCode = txtLineCode.Text;
            userInfo.Instrument = txtInstrument.Text;
            userInfo.LotNumber = txtLotNumber.Text;
            userInfo.FixtureName = txtFixtureName.Text;

                                operationData.PanelId = userInfo.panelId;
                                operationData.IsPass = true;            //校验ok
                                operationData.OperationTime = DateTime.Now.ToString();
                                operationData.OperationType = userInfo.operationType;
                                operationData.OperationSequence = 1;
                                operationData.OperationDuration = plcData.OperationDuration;
                                operationData.OperationDurationUpperLimit = plcData.OperationDurationUpperLimit;
                                operationData.OperationDurationLowerLimit = plcData.OperationDurationLowerLimit;
                                operationData.ResultPressureUpperLimit = plcData.ResultPressureUpperLimit;
                                operationData.ResultPressureLowerLimit = plcData.ResultPressureLowerLimit;
                                operationData.PressureUpperLimit = plcData.PressureUpperLimit;
                                operationData.PressureLowerLimit = plcData.PressureLowerLimit;
                                operationData.UpsideTemperatureUpperLimit = plcData.UpsideTemperatureUpperLimit;
                                operationData.UpsideTemperatureLowerLimit = plcData.UpsideTemperatureLowerLimit;
                                operationData.DownsideTemperatureUpperLimit = plcData.DownsideTemperatureUpperLimit;
                                operationData.DownsideTemperatureLowerLimit = plcData.DownsideTemperatureLowerLimit;
                                operationData.EmployeeName = userInfo.EmployeeID;
                                operationData.MachineName = userInfo.DeviceNumber;
                                operationData.ToolName = userInfo.FixtureName;
                                operationData.TotalPressure = d_values[i];
                                operationData.IsSubmitted = false;
                                operationData.SubmissionTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
string json = SerializeOperationData(data);

  • 写回答

17条回答 默认 最新

  • yy64ll826 2024-03-04 10:38
    关注

    以下是一个示例代码,展示了如何为给定的两个接口构建请求并发送它们:
    引用人工智能的回答

    using System;
    using System.Net.Http;
    using System.Text;
    using System.Threading.Tasks;
    using Newtonsoft.Json; // 需要安装Newtonsoft.Json包
    
    public class ApiRequest
    {
        public Header Header { get; set; }
        public Body Body { get; set; }
    }
    
    public class Header
    {
        public string sMesUser { get; set; }
        public string sLanguage { get; set; }
        public string sFactoryNo { get; set; }
        public string sUserNo { get; set; }
        public string sClientIp { get; set; }
        public string sInterfaceType { get; set; }
    }
    
    public class Body
    {
        public Data[] data { get; set; }
    }
    
    public class Data
    {
        public string SN { get; set; }
        public string TYPE { get; set; }
        public string CARRIER_NO { get; set; }
        public string LOTCARD_NO { get; set; }
        public string EQUIPMENT_NO { get; set; }
        public string TERMINAL_NO { get; set; }
        public string STATUS { get; set; }
        public string EQUIPCODE { get; set; }
        public string PRO_NAME { get; set; }
        public string PRO_UPDATE_DATE { get; set; }
        public string PRESSURE_VALUE { get; set; }
        public string PRESSING_DATE { get; set; }
        public string TEMPERATURE { get; set; }
        public string IS_CHECK_FEED_MATERIAL { get; set; }
        public string IS_CHECK_STATION { get; set; }
        public Detail[] Detail { get; set; } // 仅在第二个接口中使用
    }
    
    public class Detail
    {
        public string FID { get; set; }
        public string QTY { get; set; }
    }
    
    class Program
    {
        static async Task Main(string[] args)
        {
            // 第一个接口
            string url1 = "http://xxx/api/1";
            ApiRequest request1 = BuildRequest1(); // 构建请求体
            string json1 = JsonConvert.SerializeObject(request1); // 序列化为JSON
            await PostRequestAsync(url1, json1); // 发送POST请求
    
            // 第二个接口
            string url2 = "http://xxx/api/2";
            ApiRequest request2 = BuildRequest2(); // 构建请求体
            string json2 = JsonConvert.SerializeObject(request2); // 序列化为JSON
            await PostRequestAsync(url2, json2); // 发送POST请求
        }
    
        static ApiRequest BuildRequest1()
        {
            // 构建第一个接口所需的请求体
            return new ApiRequest
            {
                Header = new Header
                {
                    sMesUser = "JXYD",
                    sLanguage = "S",
                    sFactoryNo = "0",
                    sUserNo = "sa",
                    sClientIp = "127.0.0.1",
                    sInterfaceType = "TIMS_CHECK_LOTCARD_CARRIER_SN_STATION"
                },
                Body = new Body
                {
                    data = new[]
                    {
                        new Data
                        {
                            SN = "",
                            TYPE = "PANEL_SN",
                            CARRIER_NO = "",
                            LOTCARD_NO = "",
                            EQUIPMENT_NO = "",
                            TERMINAL_NO = "",
                            STATUS = "OK",
                            EQUIPCODE = "",
                            PRO_NAME = "",
                            PRO_UPDATE_DATE = "2024-01-02",
                            PRESSURE_VALUE = "12",
                            PRESSING_DATE = "2
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(16条)

报告相同问题?

问题事件

  • 系统已结题 3月15日
  • 已采纳回答 3月7日
  • 创建了问题 2月29日

悬赏问题

  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入