InvokeHelper.cs 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741
  1. /******************************************************************************
  2. * 文件名称: InvokeHelper.cs
  3. * 文件说明: 调用助手,调用方法的封装
  4. * 当前版本: V1.0
  5. * 创建日期: 2022-04-12
  6. *
  7. * 2020-04-12: 增加 businessDLLInvoke 方法
  8. * 2020-04-12: 增加 writeLog 方法
  9. * 2020-04-14: 增加 businessDLLInvoke(重载) 方法
  10. * 2020-04-14: 增加 irisServiceInvoke 方法
  11. ******************************************************************************/
  12. using Newtonsoft.Json.Linq;
  13. using System;
  14. using System.Collections.Generic;
  15. using System.IO;
  16. using System.Linq;
  17. using System.Net;
  18. using System.Text;
  19. using System.Threading.Tasks;
  20. using System.Windows.Forms;
  21. using ChengDuMedInsu2;
  22. using MedicalInsurance.Helper;
  23. using Newtonsoft.Json;
  24. using MedicalInsurance.Common;
  25. namespace MedicalInsurance.Helper
  26. {
  27. class InvokeHelper
  28. {
  29. /// <summary>
  30. /// 封装业务DLL的调用,返回整型,带两ref出参
  31. /// </summary>
  32. /// <param name="methodName"></param>
  33. /// <param name="inParam"></param>
  34. /// <param name="outParam"></param>
  35. /// <param name="ErrorMessage"></param>
  36. /// <returns></returns>
  37. public int businessDLLInvoke(string methodName, string inParam, ref string outParam,ref string ErrorMessage)
  38. {
  39. //try
  40. //{
  41. // DllInvoke dllInvoke = new DllInvoke();
  42. // string path = GlobalVariables.currentDirectory + "\\" + GlobalVariables.businessDllName;
  43. // string[] str = new string[1];
  44. // str[0] = inParam;
  45. // object o2 = DllInvoke.ManagedInvoke(path, GlobalVariables.businessDllNameSpace, "InsuBusiness", methodName, str);
  46. // if (o2.ToString() == "")
  47. // {
  48. // ErrorMessage = "返回数据为空";
  49. // return -1;
  50. // }
  51. // JObject joRtn = JObject.Parse(o2.ToString());
  52. // if (joRtn["errorCode"].ToString() != "0")
  53. // {
  54. // ErrorMessage = joRtn["errorMessage"].ToString();
  55. // return -1;
  56. // }
  57. // else
  58. // {
  59. // outParam = o2.ToString();
  60. // return 0;
  61. // }
  62. //}
  63. //catch (Exception ex)
  64. //{
  65. // ErrorMessage = "调用异常:" + ex.ToString();
  66. // return -1;
  67. //}
  68. //finally
  69. //{
  70. // writeLog(methodName,inParam,outParam);
  71. //}
  72. return 0;
  73. }
  74. /// <summary>
  75. /// 封装业务DLL的调用,返回JSON对象
  76. /// </summary>
  77. /// <param name="methodName"></param>
  78. /// <param name="inParam"></param>
  79. /// <returns></returns>
  80. public JObject businessDLLInvoke(string methodName, string inParam)
  81. {
  82. //string outParam = string.Empty;
  83. //try
  84. //{
  85. // DllInvoke dllInvoke = new DllInvoke();
  86. // string path = GlobalVariables.currentDirectory + "\\" + GlobalVariables.businessDllName;
  87. // string[] str = new string[1];
  88. // str[0] = inParam;
  89. // object o2 = DllInvoke.ManagedInvoke(path, GlobalVariables.businessDllNameSpace, "InsuBusiness", methodName, str);
  90. // outParam = o2.ToString();
  91. // JObject joRtn = JObject.Parse(outParam);
  92. // return joRtn;
  93. //}
  94. //catch (Exception ex)
  95. //{
  96. // return JsonHelper.getIrisExceptionJson(-1, "businessDLLInvoke:" , ex.Message);
  97. //}
  98. //finally
  99. //{
  100. // writeLog(methodName, inParam, outParam);
  101. //}
  102. return new JObject();
  103. }
  104. /// <summary>
  105. /// iris服务调用的封装
  106. /// </summary>
  107. /// <param name="data"></param>
  108. /// <returns></returns>
  109. public JObject invokeIrisService(string data,string serviceDesc)
  110. {
  111. string rtn = "", url = "";
  112. JObject joRtn = new JObject();
  113. try
  114. {
  115. //先根据用户请求的uri构造请求地址
  116. url = string.Format("{0}/{1}", GlobalVariables.irisServiceIP, GlobalVariables.irisServiceURL);
  117. ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
  118. ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
  119. //创建Web访问对象
  120. HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
  121. //把用户传过来的数据转成“UTF-8”的字节流
  122. byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
  123. //添加头部信息
  124. myRequest.Method = "POST";
  125. myRequest.ContentLength = buf.Length;
  126. myRequest.ContentType = "application/json";
  127. myRequest.Headers.Add("Authorization", GlobalVariables.irisServiceAuthorization);
  128. myRequest.MaximumAutomaticRedirections = 1;
  129. myRequest.AllowAutoRedirect = true;
  130. //发送请求
  131. Stream stream = myRequest.GetRequestStream();
  132. stream.Write(buf, 0, buf.Length);
  133. stream.Close();
  134. //获取接口返回值
  135. //通过Web访问对象获取响应内容
  136. HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
  137. //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
  138. StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
  139. //string rtn = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
  140. rtn = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
  141. reader.Close();
  142. myResponse.Close();
  143. joRtn = JObject.Parse(rtn);
  144. return joRtn;
  145. }
  146. catch (Exception ex)
  147. {
  148. joRtn = JsonHelper.getIrisExceptionJson(-1, serviceDesc, ex.Message);
  149. rtn = JsonConvert.SerializeObject(joRtn);
  150. return joRtn;
  151. }
  152. finally
  153. {
  154. GlobalVariables.writeLog(serviceDesc + "(" + url + ")", data, rtn);
  155. }
  156. }
  157. private JObject invokeCenterService(string data)
  158. {
  159. string postContent = "";
  160. JObject joRtn = new JObject();
  161. try
  162. {
  163. //创建一个HTTP请求
  164. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(GlobalVariables.centerURL);
  165. //Post请求方式
  166. request.Method = "POST";
  167. //内容类型
  168. request.ContentType = "application/json";
  169. //设置参数,并进行URL编码
  170. string paraUrlCoded = data;//System.Web.HttpUtility.UrlEncode(jsonParas);
  171. byte[] payload;
  172. //将Json字符串转化为字节
  173. payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
  174. //设置请求的ContentLength
  175. request.ContentLength = payload.Length;
  176. //发送请求,获得请求流
  177. Stream writer;
  178. writer = request.GetRequestStream();//获取用于写入请求数据的Stream对象
  179. //将请求参数写入流
  180. writer.Write(payload, 0, payload.Length);
  181. writer.Close();//关闭请求流
  182. // String strValue = "";//strValue为http响应所返回的字符流
  183. HttpWebResponse response;
  184. try
  185. {
  186. //获得响应流
  187. response = (HttpWebResponse)request.GetResponse();
  188. }
  189. catch (WebException ex)
  190. {
  191. response = ex.Response as HttpWebResponse;
  192. return JsonHelper.getIrisExceptionJson(-99, "centerServeiceInvok中获得响应流异常", ex.Message);
  193. }
  194. Stream s = response.GetResponseStream();
  195. StreamReader sRead = new StreamReader(s);
  196. postContent = sRead.ReadToEnd();
  197. sRead.Close();
  198. joRtn = JObject.Parse(postContent);//返回Json数据
  199. return joRtn;
  200. }
  201. catch (Exception ex)
  202. {
  203. postContent = "调用中心服务异常" + ex.Message;
  204. //joRtn = JsonHelper.getIrisExceptionJson(-100, "调用中心服务异常", ex.Message);
  205. joRtn.Add("infcode", -1);
  206. joRtn.Add("err_msg", ex.Message);
  207. return joRtn;
  208. }
  209. finally
  210. {
  211. GlobalVariables.writeLog("centerServeiceInvok(" + GlobalVariables.centerURL + ")", data, joRtn.ToString());
  212. this.saveCenterTradeLogToDB(data, postContent);
  213. }
  214. }
  215. private JObject invokeCenterService(string data,string centerURL)
  216. {
  217. string postContent = "";
  218. JObject joRtn = new JObject();
  219. try
  220. {
  221. //创建一个HTTP请求
  222. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(centerURL);
  223. //Post请求方式
  224. request.Method = "POST";
  225. //内容类型
  226. request.ContentType = "application/json";
  227. //设置参数,并进行URL编码
  228. string paraUrlCoded = data;//System.Web.HttpUtility.UrlEncode(jsonParas);
  229. byte[] payload;
  230. //将Json字符串转化为字节
  231. payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
  232. //设置请求的ContentLength
  233. request.ContentLength = payload.Length;
  234. //发送请求,获得请求流
  235. Stream writer;
  236. writer = request.GetRequestStream();//获取用于写入请求数据的Stream对象
  237. //将请求参数写入流
  238. writer.Write(payload, 0, payload.Length);
  239. writer.Close();//关闭请求流
  240. // String strValue = "";//strValue为http响应所返回的字符流
  241. HttpWebResponse response;
  242. try
  243. {
  244. //获得响应流
  245. response = (HttpWebResponse)request.GetResponse();
  246. }
  247. catch (WebException ex)
  248. {
  249. response = ex.Response as HttpWebResponse;
  250. return JsonHelper.getIrisExceptionJson(-99, "centerServeiceInvok中获得响应流异常", ex.Message);
  251. }
  252. Stream s = response.GetResponseStream();
  253. StreamReader sRead = new StreamReader(s);
  254. postContent = sRead.ReadToEnd();
  255. sRead.Close();
  256. joRtn = JObject.Parse(postContent);//返回Json数据
  257. return joRtn;
  258. }
  259. catch (Exception ex)
  260. {
  261. postContent = "调用中心服务异常" + ex.Message;
  262. //joRtn = JsonHelper.getIrisExceptionJson(-100, "调用中心服务异常", ex.Message);
  263. joRtn.Add("infcode", -1);
  264. joRtn.Add("err_msg", ex.Message);
  265. return joRtn;
  266. }
  267. finally
  268. {
  269. GlobalVariables.writeLog("centerServeiceInvok(" + centerURL + ")", data, joRtn.ToString());
  270. this.saveCenterTradeLogToDB(data, postContent);
  271. }
  272. }
  273. public JObject InvokeCenterService(string funNO,string data)
  274. {
  275. string input = GlobalVariables.SetJsonParam(funNO ,data);
  276. string errMsg = "";
  277. List<string> infList = new List<string> { "1101", "2102", "2102", "2201", "2207","2207A", "2401", "2601", "3201", "3202", "3203", "S2101", "2304", "S3501", "S3203" };
  278. JObject joRtn = new JObject();
  279. try
  280. {
  281. joRtn = invokeCenterService(input);
  282. //解密
  283. //bool encryped = infList.Contains(funNO)
  284. IniFile urlIni = new IniFile(GlobalVariables.currentDirectory + @"\EncrypInfo.ini");
  285. string encrypedFlag = urlIni.ReadValue(GlobalVariables.InterfaceID + "_FUNNO", funNO);
  286. GlobalVariables.writeLog(encrypedFlag);
  287. GlobalVariables.writeLog(funNO);
  288. bool encryped = (encrypedFlag == "1");
  289. //encryped = false;
  290. if (!encryped)
  291. {
  292. return joRtn;
  293. }
  294. else
  295. {
  296. //新增加密
  297. YinHaiEncrypt yhEncrypt = new YinHaiEncrypt();
  298. if (JsonHelper.parseCenterReturnJson(joRtn, out errMsg) != 0)
  299. {
  300. return joRtn;
  301. }
  302. else
  303. {
  304. string output = JsonHelper.getJsonValue(joRtn,"output");
  305. output = yhEncrypt.Decrypt(output);
  306. GlobalVariables.writeLog("output明文:" + output);
  307. joRtn["output"] = JObject.Parse(output);
  308. GlobalVariables.writeLog("解析后返参" +joRtn.ToString());
  309. return joRtn;
  310. }
  311. }
  312. }
  313. catch (Exception ex)
  314. {
  315. if (joRtn["infcode"] == null) { joRtn.Add("infcode", -1); }
  316. if (joRtn["err_msg"] == null) { joRtn.Add("err_msg", ex.Message); }
  317. return joRtn;
  318. }
  319. }
  320. public JObject InvokeCenterServiceOfMutualAid(string funNO, string data)
  321. {
  322. string input = GlobalVariables.SetJsonParamOfMutualAid(funNO, data);
  323. string errMsg = "";
  324. List<string> infList = new List<string> { "1101", "2102", "2102", "2201", "2207", "2207A", "2401", "2601", "3201", "3202", "3203", "S2101", "2304", "S3501", "S3203" };
  325. JObject joRtn = new JObject();
  326. try
  327. {
  328. joRtn = invokeCenterService(input,GlobalVariables.mutualAidCenterURL);
  329. //解密
  330. //bool encryped = infList.Contains(funNO);
  331. IniFile urlIni = new IniFile(GlobalVariables.currentDirectory + @"\EncrypInfo.ini");
  332. string encrypedFlag = urlIni.ReadValue(GlobalVariables.InterfaceID + "_FUNNO", funNO);
  333. GlobalVariables.writeLog(encrypedFlag);
  334. GlobalVariables.writeLog(funNO);
  335. bool encryped = (encrypedFlag == "1");
  336. //encryped = false;
  337. if (!encryped)
  338. {
  339. return joRtn;
  340. }
  341. else
  342. {
  343. //新增加密
  344. YinHaiEncrypt yhEncrypt = new YinHaiEncrypt();
  345. if (JsonHelper.parseCenterReturnJson(joRtn, out errMsg) != 0)
  346. {
  347. return joRtn;
  348. }
  349. else
  350. {
  351. string output = JsonHelper.getJsonValue(joRtn, "output");
  352. output = yhEncrypt.Decrypt(output);
  353. GlobalVariables.writeLog("output明文:" + output);
  354. joRtn["output"] = JObject.Parse(output);
  355. GlobalVariables.writeLog("解析后返参" + joRtn.ToString());
  356. return joRtn;
  357. }
  358. }
  359. }
  360. catch (Exception ex)
  361. {
  362. joRtn.Add("infcode", -1);
  363. joRtn.Add("err_msg", ex.Message);
  364. return joRtn;
  365. }
  366. }
  367. public JObject centerServiceDownload(string data)
  368. {
  369. string error = string.Empty; int errorCode = 0;
  370. string sRtn = "";
  371. try
  372. {
  373. JObject jsonInParam = JObject.Parse(data);
  374. string fileName = (string)jsonInParam["input"]["fsDownloadIn"]["filename"];
  375. string filePath = System.Environment.CurrentDirectory + "\\Download\\" + fileName;
  376. //如果不存在目录,则创建目录
  377. if (!Directory.Exists(System.Environment.CurrentDirectory + "\\Download"))
  378. {
  379. //创建文件夹
  380. DirectoryInfo dirInfo = Directory.CreateDirectory(System.Environment.CurrentDirectory + "\\Download");
  381. }
  382. if (File.Exists(filePath))
  383. {
  384. File.Delete(filePath);
  385. }
  386. FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
  387. //创建一个HTTP请求
  388. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(GlobalVariables.centerURL);
  389. //Post请求方式
  390. request.Method = "POST";
  391. //内容类型
  392. request.ContentType = "application/json";
  393. //设置参数,并进行URL编码
  394. string paraUrlCoded = data;//System.Web.HttpUtility.UrlEncode(jsonParas);
  395. byte[] payload;
  396. //将Json字符串转化为字节
  397. payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
  398. //设置请求的ContentLength
  399. request.ContentLength = payload.Length;
  400. Stream writer;
  401. try
  402. {
  403. writer = request.GetRequestStream();//获取用于写入请求数据的Stream对象
  404. }
  405. catch (Exception)
  406. {
  407. writer = null;
  408. errorCode = -100;
  409. error = "连接服务器失败!";
  410. }
  411. //将请求参数写入流
  412. writer.Write(payload, 0, payload.Length);
  413. writer.Close();//关闭请求流
  414. // String strValue = "";//strValue为http响应所返回的字符流
  415. //发送请求并获取相应回应数据
  416. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  417. //直到request.GetResponse()程序才开始向目标网页发送Post请求
  418. Stream responseStream = response.GetResponseStream();
  419. //创建本地文件写入流
  420. byte[] bArr = new byte[1024];
  421. int iTotalSize = 0;
  422. int size = responseStream.Read(bArr, 0, (int)bArr.Length);
  423. while (size > 0)
  424. {
  425. iTotalSize += size;
  426. fs.Write(bArr, 0, size);
  427. size = responseStream.Read(bArr, 0, (int)bArr.Length);
  428. }
  429. fs.Close();
  430. responseStream.Close();
  431. dynamic joReturn = new JObject();
  432. joReturn.errorCode = errorCode;
  433. joReturn.error = error;
  434. joReturn.filePath = filePath;
  435. sRtn = joReturn.ToString();
  436. return joReturn;
  437. }
  438. catch (Exception ex)
  439. {
  440. errorCode = -100;
  441. error = ex.Message;
  442. dynamic joReturn = new JObject();
  443. joReturn.errorCode = errorCode;
  444. joReturn.error = error;
  445. sRtn = joReturn.ToString();
  446. return joReturn;
  447. }
  448. finally
  449. {
  450. GlobalVariables.writeLog("centerServiceDownload", data, sRtn);
  451. }
  452. }
  453. public JObject centerServiceDownload(string fileName, string data)
  454. {
  455. string error = string.Empty; int errorCode = 0;
  456. string sRtn = "";
  457. try
  458. {
  459. JObject jsonInParam = JObject.Parse(data);
  460. //string fileName = (string)jsonInParam["input"]["fsDownloadIn"]["filename"];
  461. string filePath = System.Environment.CurrentDirectory + "\\Download\\" + fileName;
  462. //如果不存在目录,则创建目录
  463. if (!Directory.Exists(System.Environment.CurrentDirectory + "\\Download"))
  464. {
  465. //创建文件夹
  466. DirectoryInfo dirInfo = Directory.CreateDirectory(System.Environment.CurrentDirectory + "\\Download");
  467. }
  468. if (File.Exists(filePath))
  469. {
  470. File.Delete(filePath);
  471. }
  472. FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
  473. //创建一个HTTP请求
  474. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(GlobalVariables.centerURL);
  475. //Post请求方式
  476. request.Method = "POST";
  477. //内容类型
  478. request.ContentType = "application/json";
  479. //设置参数,并进行URL编码
  480. string paraUrlCoded = data;//System.Web.HttpUtility.UrlEncode(jsonParas);
  481. byte[] payload;
  482. //将Json字符串转化为字节
  483. payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
  484. //设置请求的ContentLength
  485. request.ContentLength = payload.Length;
  486. Stream writer;
  487. try
  488. {
  489. writer = request.GetRequestStream();//获取用于写入请求数据的Stream对象
  490. }
  491. catch (Exception)
  492. {
  493. writer = null;
  494. errorCode = -100;
  495. error = "连接服务器失败!";
  496. }
  497. //将请求参数写入流
  498. writer.Write(payload, 0, payload.Length);
  499. writer.Close();//关闭请求流
  500. // String strValue = "";//strValue为http响应所返回的字符流
  501. //发送请求并获取相应回应数据
  502. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  503. //直到request.GetResponse()程序才开始向目标网页发送Post请求
  504. Stream responseStream = response.GetResponseStream();
  505. //创建本地文件写入流
  506. byte[] bArr = new byte[1024];
  507. int iTotalSize = 0;
  508. int size = responseStream.Read(bArr, 0, (int)bArr.Length);
  509. while (size > 0)
  510. {
  511. iTotalSize += size;
  512. fs.Write(bArr, 0, size);
  513. size = responseStream.Read(bArr, 0, (int)bArr.Length);
  514. }
  515. fs.Close();
  516. responseStream.Close();
  517. dynamic joReturn = new JObject();
  518. joReturn.errorCode = errorCode;
  519. joReturn.error = error;
  520. joReturn.filePath = filePath;
  521. sRtn = joReturn.ToString();
  522. return joReturn;
  523. }
  524. catch (Exception ex)
  525. {
  526. errorCode = -100;
  527. error = ex.Message;
  528. dynamic joReturn = new JObject();
  529. joReturn.errorCode = errorCode;
  530. joReturn.error = error;
  531. sRtn = joReturn.ToString();
  532. return joReturn;
  533. }
  534. finally
  535. {
  536. GlobalVariables.writeLog("centerServiceDownload", data, sRtn);
  537. }
  538. }
  539. public void printYHCom(string input, out string output)
  540. {
  541. output = "";
  542. try
  543. {
  544. ChengDuMedInsu2.YinHaiCom yinhaiCom = new ChengDuMedInsu2.YinHaiCom();
  545. yinhaiCom.Init();
  546. yinhaiCom.Print(input, out output);
  547. }
  548. catch (Exception ex)
  549. {
  550. output = ex.Message;
  551. }
  552. finally
  553. {
  554. GlobalVariables.writeLog("银海打印控件", input, output);
  555. }
  556. }
  557. private void saveCenterTradeLogToDB(string inParam, string outParam)
  558. {
  559. dynamic joIris = new JObject();
  560. string sRtn = "";
  561. try
  562. {
  563. //解析postContent,插入医保交易日志表
  564. JObject joIn = new JObject(JObject.Parse(inParam));
  565. JObject joOut = new JObject(JObject.Parse(outParam));
  566. JArray jaParams = new JArray();
  567. JObject joParam = new JObject();
  568. joParam.Add("inParam", JObject.FromObject(joIn));
  569. joParam.Add("outParam", JObject.FromObject(joOut));
  570. joParam.Add("HospitalDr", GlobalVariables.hospitalDr);
  571. joParam.Add("InterfaceDr", GlobalVariables.interfaceDr);
  572. joParam.Add("updateUserID", GlobalVariables.operatorNO);
  573. joParam.Add("psn_no", GlobalVariables.psn_no);
  574. jaParams.Add(joParam);
  575. joIris.code = "09010021";
  576. joIris.Add("params",jaParams);
  577. //InvokeHelper invoker = new InvokeHelper();
  578. sRtn = invokeInsuService(joIris.ToString(), "保存日志到数据库").ToString();
  579. }
  580. catch (Exception ex)
  581. {
  582. sRtn = JsonHelper.getIrisExceptionJson(-100,"保存日志异常",ex.Message).ToString();
  583. }
  584. }
  585. /// <summary>
  586. /// 一次交易的完整日志记录,用*****分割每次交易,简洁明了。
  587. /// </summary>
  588. /// <param name="tradeName"></param>
  589. /// <param name="inParam"></param>
  590. /// <param name="outParam"></param>
  591. ///
  592. /// <summary>
  593. /// iris服务调用的封装
  594. /// </summary>
  595. /// <param name="data"></param>
  596. /// <returns></returns>
  597. public JObject invokeHISService(string data, string serviceDesc)
  598. {
  599. string rtn = "", url = "";
  600. JObject joRtn = new JObject();
  601. try
  602. {
  603. //先根据用户请求的uri构造请求地址
  604. url = string.Format("{0}/{1}", GlobalVariables.hisIrisServiceIP, GlobalVariables.hisIrisServiceURL);
  605. ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
  606. ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
  607. //创建Web访问对象
  608. HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
  609. //把用户传过来的数据转成“UTF-8”的字节流
  610. byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
  611. //添加头部信息
  612. myRequest.Method = "POST";
  613. myRequest.ContentLength = buf.Length;
  614. myRequest.ContentType = "application/json";
  615. myRequest.Headers.Add("Authorization", GlobalVariables.hisAuthorization);
  616. myRequest.Headers.Add("Authorization", GlobalVariables.hisAuthorization);
  617. myRequest.MaximumAutomaticRedirections = 1;
  618. myRequest.AllowAutoRedirect = true;
  619. //发送请求
  620. Stream stream = myRequest.GetRequestStream();
  621. stream.Write(buf, 0, buf.Length);
  622. stream.Close();
  623. //获取接口返回值
  624. //通过Web访问对象获取响应内容
  625. HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
  626. //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
  627. StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
  628. //string rtn = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
  629. rtn = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
  630. reader.Close();
  631. myResponse.Close();
  632. joRtn = JObject.Parse(rtn);
  633. return joRtn;
  634. }
  635. catch (Exception ex)
  636. {
  637. joRtn = JsonHelper.getIrisExceptionJson(-1, serviceDesc, ex.Message);
  638. rtn = JsonConvert.SerializeObject(joRtn);
  639. return joRtn;
  640. }
  641. finally
  642. {
  643. GlobalVariables.writeLog(serviceDesc + "(" + url + ")" + "Authorization:" + (GlobalVariables.hisAuthorization), data, rtn);
  644. }
  645. }
  646. /// <summary>
  647. /// iris服务调用的封装
  648. /// </summary>
  649. /// <param name="data"></param>
  650. /// <returns></returns>
  651. public JObject invokeInsuService(string data, string serviceDesc)
  652. {
  653. string rtn = "", url = "";
  654. JObject joRtn = new JObject();
  655. try
  656. {
  657. //先根据用户请求的uri构造请求地址
  658. url = string.Format("{0}/{1}", GlobalVariables.insuIrisServiceIP, GlobalVariables.insuIrisServiceURL);
  659. ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
  660. ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
  661. //创建Web访问对象
  662. HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
  663. //把用户传过来的数据转成“UTF-8”的字节流
  664. byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
  665. //添加头部信息
  666. myRequest.Method = "POST";
  667. myRequest.ContentLength = buf.Length;
  668. myRequest.ContentType = "application/json";
  669. myRequest.Headers.Add("Authorization", GlobalVariables.insuIrisServiceAuthorization);
  670. myRequest.MaximumAutomaticRedirections = 1;
  671. myRequest.AllowAutoRedirect = true;
  672. //发送请求
  673. Stream stream = myRequest.GetRequestStream();
  674. stream.Write(buf, 0, buf.Length);
  675. stream.Close();
  676. //获取接口返回值
  677. //通过Web访问对象获取响应内容
  678. HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
  679. //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
  680. StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
  681. //string rtn = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
  682. rtn = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
  683. reader.Close();
  684. myResponse.Close();
  685. joRtn = JObject.Parse(rtn);
  686. return joRtn;
  687. }
  688. catch (Exception ex)
  689. {
  690. joRtn = JsonHelper.getIrisExceptionJson(-1, serviceDesc, ex.Message);
  691. rtn = JsonConvert.SerializeObject(joRtn);
  692. return joRtn;
  693. }
  694. finally
  695. {
  696. GlobalVariables.writeLog(serviceDesc + "(" + url + ")", data, rtn);
  697. }
  698. }
  699. }
  700. }