目录:
阶段一: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(); }
-
执行结果