U9轻量服务项目学习(POST调用、解析) 阶段五


目录: 

阶段一:U9轻量服务项目学习(创建、配置)

阶段二:U9轻量服务项目学习(脚本、发布、测试)

阶段三:U9轻量服务项目学习(逻辑编码、DLL部署)

阶段四:U9轻量服务项目学习(工具测试)

阶段五:U9轻量服务项目学习(POST调用、解析)


    上一篇通过PostMain测试工具调用U9轻量服务项目生成客开测试单据,那么本次测试内容将采用C#控制台应用程序调用U9轻量服务项目创建客开测试单据,创建成功后返回单据编码及单据ID相关信息,调用服务相关代码来源于"调用U9接口示例.docx"文档。

    最终以随笔的方式记录了U9轻量服务项目(创建、逻辑编码、文件部署、工具测试、C#控制台程序调用等...)实践的整个过程,虽然艰辛,但终见结果,实属不易。经过了漫长的几个阶段,更新到这里就全部结束了,希望能够给才入坑的同仁带来帮助。

  • Post

        /// <summary>
        /// Post
        /// </summary>
        /// <param name="StrURL"> 服务地址</param>
        /// <param name="StrJson">服务参数(JSON格式字符串)</param>
        /// <returns></returns>
        public static string PostSend(string StrURL, string StrJson)
        {
            string strResult = "";
            byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(StrJson);
            HttpWebRequest Request = (HttpWebRequest)HttpWebRequest.Create(StrURL);
            Request.Method = "POST";
            Request.ContentType = "application/json;charset=UTF-8";//x-www-form-urlencoded
            Request.ContentLength = postBytes.Length;
            using (Stream stream = Request.GetRequestStream())
            {
                stream.Write(postBytes, 0, postBytes.Length);
                stream.Close();
            }
            System.Net.HttpWebResponse Response;
            try
            {
                Response = (System.Net.HttpWebResponse)Request.GetResponse();
            }
            catch (WebException ex)
            {
                Response = (HttpWebResponse)ex.Response;
            }  
            using (StreamReader Reader = new StreamReader(Response.GetResponseStream(), Encoding.UTF8))
            {
                strResult = Reader.ReadToEnd();
                Reader.Close();
            } 
            return strResult;
        }
  • 定义实体类

      返回结果C#实体类定义,复制返回后JSON串至(JSON转换实体类参考地址:https://www.json.cn/json/json2csharp.html)网址中转换C#实体类。

    返回结果:

    {"d":[{"__type":"MessageDTOData:UFIDA.U9.Cust.SP.ServiceSupportRestSV.ServicePlanRestSV","DocID":"1002105260000009","DocNo":"Plan2105260003","IsSuccess":true,"Messages":"服务计划单生单成功!"}]}

    C#实体类

   public class DItem
    {
        /// <summary>
        /// 业务类型
        /// </summary>
        public string __type { get; set; }
        /// <summary>
        /// 单据ID
        /// </summary>
        public string DocID { get; set; }
        /// <summary>
        /// 单据编码
        /// </summary>
        public string DocNo { get; set; }
        /// <summary>
        /// 是否成功
        /// </summary>
        public string IsSuccess { get; set; }
        /// <summary>
        /// 提示消息
        /// </summary>
        public string Messages { get; set; }
    }
     
    public class Root
    {
        /// <summary>
        /// 
        /// </summary>
        public List <DItem > d { get; set; }
    }
  • 反序列化处理

     引用:Newtonsoft.Json.dll

        static void Main(string[] args)
        {
            //服务地址
            string strURL = "http://192.168.88.232/U9/RestServicesCust/UFIDA.U9.Cust.SP.ServiceSupportRestSV.ServicePlanRestSV.IPlanDocCreate.svc/Do";
            //服务参数拼接
            string StrJson = " {"context":{";
            StrJson = StrJson + ""CultureName":"zh-CN",";
            StrJson = StrJson + ""EntCode":"001",";
            StrJson = StrJson + ""OrgCode":"YMT",";
            StrJson = StrJson + ""UserCode":"demo"";
            StrJson = StrJson + "}";
            StrJson = StrJson + ","planDocS":[{";
            StrJson = StrJson + ""MakerBy":"Post测试",";
            StrJson = StrJson + ""PlanDocType":1002005190200002,";
            StrJson = StrJson + ""PlanRemark":"控制台应用程序测试Post调用服务",";
            StrJson = StrJson + ""ProjectName":"Post调用测试",";
            StrJson = StrJson + ""ServiceRecord":1002105140010003,";
            StrJson = StrJson + ""ServicePlanLines":";
            StrJson = StrJson + " [{";
            StrJson = StrJson + ""DocLineNo":0,";
            StrJson = StrJson + ""HandlerOrgCode":"YMY",";
            StrJson = StrJson + ""HandlerCode":"000004",";
            StrJson = StrJson + ""Importance":1,";
            StrJson = StrJson + ""WorkRemarks":"控制台程序测试POST调用U9轻量服务项目"";
            StrJson = StrJson + "}]";
            StrJson = StrJson + "}]";
            string StrResponse = PostSend(strURL, StrJson);
            Root rt = JsonConvert.DeserializeObject<Root>(StrResponse);
            string _type = "";
            string _DocID = "";
            string _DocNo = "";
            string _IsSuccess = "";
            string _Mes = "";
            foreach (DItem resut in rt.d)
            {
                _type = resut.__type.ToString();
                _IsSuccess = resut.IsSuccess.ToString();
                _DocNo = resut.DocNo.ToString();
                _DocID = resut.DocID.ToString();
                _Mes = resut.Messages.ToString();
            }
            Console.WriteLine("服务参数JSON字符串:");
            Console.WriteLine("    "+StrJson);
            Console.WriteLine("---------------------------");
            Console.WriteLine("服务结果JSON字符串:");
            Console.WriteLine("    " + StrResponse);
            Console.WriteLine("---------------------------");
            Console.WriteLine("反序列化结果:");
            Console.WriteLine("    业务类型:" + _type );
            Console.WriteLine("    成功标识:" + _IsSuccess );
            Console.WriteLine("    单据编码:" + _DocNo );
            Console.WriteLine("    单据ID:" + _DocID);
            Console.WriteLine("    消息:" + _Mes );
            Console.ReadLine();  
        }
  • 执行结果

 

简单粗暴的记录,便于后续翻阅,转载请注明出处。
原文地址:https://www.cnblogs.com/youmin3205/p/14809788.html