zoukankan      html  css  js  c++  java
  • 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();  
            }
    • 执行结果

     

    简单粗暴的记录,便于后续翻阅,转载请注明出处。
  • 相关阅读:
    glade2支持C++代码的输出(1)
    通用的信号量捕获打印调用栈接口
    xbmc的静态链接办法
    SVG图片资源较多的一个WIKI网站
    批量图片大小调整
    每日算法
    每日算法
    每日算法
    每日算法
    每日算法
  • 原文地址:https://www.cnblogs.com/youmin3205/p/14809788.html
Copyright © 2011-2022 走看看