接口调用

一.实体类

1.参数类

 public class PalletQuery 
    {
        public string pallet { get; set; }

        /// <summary>
        /// 组织id
        /// </summary>
        public string orgid { get; set; }
    }

2.返回结果类

 /// <summary>
    /// 栈板FBA数据
    /// </summary>
    public class PallteFBA:ResponePram
    {
        public PguFba data { get; set; }
    }

    /// <summary>
    /// 盘古Fba
    /// </summary>
    public class PguFba
    {
        /// <summary>
        /// 回传信息
        /// </summary>
        public string result { get; set; }

        /// <summary>
        /// 是否进行FBA比对
        /// </summary>
        public string flag { get; set; }


        /// <summary>
        /// 栈板号
        /// </summary>
        public string pallteNo { get; set; }


        /// <summary>
        /// 栈板FBA
        /// </summary>
        public string pallteFba { get; set; }

        /// <summary>
        /// 工单号
        /// </summary>
        public string erpNum { get; set; }

        /// <summary>
        /// 彩盒FBA标签集合
        /// </summary>
        public List<string> boxFba { get; set; }
    }

 

二.json工具类

1.实体转换json

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using Newtonsoft.Json;

namespace SunwinonCPC.Common.Json
{
    public class EntityToJson
    {
        // 从一个对象信息生成Json串
        public static string ObjectToJson(object obj)
        {
           return JsonConvert.SerializeObject(obj);
        }

    }
}

2.json转换实体

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Newtonsoft.Json;
//using System.Web.Script.Serialization;

namespace SunwinonCPC.Common.Json
{
    /// <summary>
    /// Json字符串转实体
    /// </summary>
    public class JsonToEntity
    {
      
        /// <summary>
        /// Json字符串转实体
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="param">json字符串</param>
        /// <returns></returns>
        public static T ConvertToEntity<T>(string param)
        {
           return JsonConvert.DeserializeObject<T>(param);
        }
    }
}

三:Web API调用工具

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

namespace SunwinonCPC.Common
{
    /// <summary>
    /// Web API调用工具
    /// </summary>
    public class WebApiTool
    {
        /// <summary>
        /// GET
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static string HttpGet(string url)
        {
            string sResult = string.Empty;
            try
            {
                Encoding encoding = Encoding.UTF8;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "GET";
                request.ContentType = "application/json";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                {
                    sResult = reader.ReadToEnd();
                }
                response.Close();
            }
            catch (Exception err)
            {
                throw new Exception("当前组织[" + Globals.OrgId + "]访问:" + url + "出错,请稍后再试或联系管理员");
            }

            return sResult;
        }

        /// <summary>
        /// Post
        /// </summary>
        /// <param name="url"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public static string HttpPost(string url, string data)
        {
            return HttpPost(url, data, "application/json");
        }

        /// <summary>
        /// Post
        /// </summary>
        /// <param name="url"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public static string HttpPost(string url, string data, string contentType)
        {
            string sResult = string.Empty;
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "POST";

                request.ContentType = contentType;
                byte[] byt = Encoding.UTF8.GetBytes(data);
                request.ContentLength = byt.Length;
                Stream writer = request.GetRequestStream();
                writer.Write(byt, 0, byt.Length);
                writer.Close();

                HttpWebResponse responseSorce = (HttpWebResponse)request.GetResponse();
                Stream stream = responseSorce.GetResponseStream();
                StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("UTF-8"));
                sResult = reader.ReadToEnd();
                stream.Close();
                responseSorce.Close();
            }
            catch (Exception err)
            {
                throw new Exception("当前组织["+Globals.OrgId+"]访问:" + url + "出错,请稍后再试或联系管理员");
            }
            return sResult;
        }
    }
}

四:接口(服务器)

1.实体类

    /// <summary>
    /// 栈板FBA查询
    /// </summary>
    public class PalletQuery
    {
        public string pallet { get; set; }

        /// <summary>
        /// 组织id
        /// </summary>
        public string orgid { get; set; }
    }

注意:前端的实体参数类要与服务器中的参数接收类一致,即PalletQuery类和PalletQuery一样;

2.接口

        /// <summary>
        /// 盘古FBA
        /// </summary>
        /// <param name="pallet"></param>
        /// <returns></returns>
        [HttpPost("OutWarehouseFBACheck")]
        public async Task<ResponseBody> OutWarehouseFBACheck(PalletQuery pallet)
        {
            Task<ResponseBody> responsePram = Task.Run<ResponseBody>(() =>
            {
                ResponseBody body = new ResponseBody();
                DbHelp dbHelp = DbHelp.GetDbHelpInstance();
                try
                {
                    //string webUrl = AppsettingsUtility.connectionstr.pangGuApi + "/ims-pms/api/prod/getPackFbaData";
                    string webUrl = DockingApi.GetPgLinkApi(pallet.orgid) + "/ims-pms/api/prod/getPackFbaData";
                    string palltNo = "{\"palLbId\":\"" + pallet.pallet + "\"}";

                    string str = HttpPost.DoPost(webUrl, palltNo);

                    PallteFBA ReturnObj = (PallteFBA)JosnToolNet.JsonToObject(str, new PallteFBA());

                    if (ReturnObj == null)
                    {
                        body.code = 202;
                        body.msg = "False:获取到的信息的解析失败了!";
                        return body;
                    }

                    if (ReturnObj.result.Contains("NG"))
                    {
                        body.code = 202;
                        body.msg = "False:" + ReturnObj.result;
                        return body;
                    }

                    //是否需要FBA检验
                    if (ReturnObj.flag == "N")
                    {
                        body.code = 202;
                        body.msg = "False:栈板[" + pallet.pallet + "]不需要进行栈板FBA比对";
                        return body;
                    }

                    body.code = 200;
                    body.msg = "True:查询成功!";
                    body.data = ReturnObj;
                }
                catch (Exception ex)
                {
                    body.code = 201;
                    body.msg = ex.Message;
                }
                return body;
            });
            return await responsePram;
        }

 

五:调用接口

//2.验证是否需要扫描栈板FBA(亚马逊)
PalletQuery query = new PalletQuery();
query.orgid = Globals.OrgId;
query.pallet = txt_pallet.Text.Trim();
PallteFBA pram = JsonConvert.DeserializeObject<PallteFBA>(WebApiTool.HttpPost(Globals.OpApi + "InWareHouse/OutWarehouseFBACheck", JsonConvert.SerializeObject(query)));        
Globals.OpApi + "InWareHouse/OutWarehouseFBACheck"-->接口地址

posted @ 2022-03-03 11:12  答辉  阅读(63)  评论(0)    收藏  举报