HTTPSmsInterface.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using MSXML2;
  7. namespace LYFZ.WinicSmsInterface
  8. {
  9. /// <summary>
  10. /// HTTP短信发送接口
  11. /// </summary>
  12. public class HTTPSmsInterface
  13. {
  14. public HTTPSmsInterface() {
  15. }
  16. public static string InterfaceURL = "http://service.winic.org:8009/sys_port/gateway/index.asp";
  17. /// <summary>
  18. /// 发送短信
  19. /// </summary>
  20. /// <param name="uid">帐号</param>
  21. /// <param name="pwd">密码</param>
  22. /// <param name="tos">目标手机号,多个用“,”号分隔 每次提交请不要大于100个号码</param>
  23. /// <param name="msg">内容 短信内容 最大字符数为390个 说明:第一条为70字每条,之后为67字每条</param>
  24. /// <param name="otime">定时发送时间,忽略时为即时发送</param>
  25. /// <returns></returns>
  26. public static HTTPSmsSendReturnInfo SendSmsMessagesPOST(string _uid, string _pwd, string _tos, string _msg, string _otime = "")
  27. {
  28. System.GC.Collect();
  29. Encoding myEncoding = Encoding.GetEncoding("gb2312");
  30. string uid = _uid.Trim();
  31. string pwd = _pwd.Trim();
  32. string mob = _tos.Trim();
  33. string msg = System.Web.HttpUtility.UrlEncode(_msg.Trim(), myEncoding);
  34. string Send_URL = InterfaceURL+"?t=" + DateTime.Now.ToString("yyyyMMddhhmmss"); //POST到网站
  35. try
  36. {
  37. string postData = "id=" + uid + "&pwd=" + pwd + "&to=" + mob + "&content=" + msg + "&time=" + _otime;
  38. byte[] byteArray = Encoding.Default.GetBytes(postData);
  39. System.Threading.Thread.Sleep(3);
  40. System.Net.HttpWebRequest webRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(new Uri(Send_URL));
  41. webRequest.Method = "POST";
  42. webRequest.ContentType = "application/x-www-form-urlencoded";
  43. webRequest.ContentLength = byteArray.Length;
  44. System.IO.Stream newStream = webRequest.GetRequestStream();
  45. newStream.Write(byteArray, 0, byteArray.Length);
  46. newStream.Close();
  47. newStream = null;
  48. //接收返回信息:
  49. webRequest.Timeout = 600000;
  50. using (System.Net.WebResponse wr = webRequest.GetResponse())
  51. {
  52. System.IO.StreamReader str = new System.IO.StreamReader(wr.GetResponseStream(), Encoding.Default);
  53. string strMsg = str.ReadToEnd();
  54. str.Close();
  55. str.Dispose();
  56. webRequest.Abort();
  57. webRequest = null;
  58. str = null;
  59. strMsg = System.Web.HttpUtility.UrlDecode(strMsg);
  60. return new HTTPSmsSendReturnInfo(strMsg);
  61. //在这里对接收到的页面内容进行处理
  62. }
  63. /* System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)webRequest.GetResponse();
  64. System.IO.StreamReader stream = new System.IO.StreamReader(response.GetResponseStream(), Encoding.Default);
  65. string Message = stream.ReadToEnd();
  66. Message = System.Web.HttpUtility.UrlDecode(Message);
  67. stream.Close();
  68. response.Close();
  69. webRequest.Abort();
  70. return new HTTPSmsSendReturnInfo(Message); */
  71. }
  72. catch (Exception ex)
  73. {
  74. //无法连接到远程服务器
  75. try
  76. {
  77. string TimeoutLogsMsg = Send_URL + "【返回错误信息:" + ex.Message + "】";
  78. HTTPSmsInterface.TimeoutLogs.Append("\r\n【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "】" + TimeoutLogsMsg + "\r\n");
  79. }
  80. catch { }
  81. if (ex.Message.ToLower().Contains("远程名称无法解析") || ex.Message.ToLower().Contains("remote name could not") || ex.Message.ToLower().Contains("无法连接到远程服务器") || ex.Message.ToLower().Contains("未能解析此远程名称") || ex.Message.ToLower().Contains("404") || ex.Message.ToLower().Contains("500") || ex.Message.ToLower().Contains("400"))
  82. {
  83. return new HTTPSmsSendReturnInfo("-1/Send:0/Consumption:.0/Tmoney:0/sid:0/访问远程服务器时出错,未能解析此远程名称【错误信息:" + ex.Message + "】");
  84. }
  85. else
  86. {
  87. return new HTTPSmsSendReturnInfo("000/Send:0/Consumption:.0/Tmoney:0/sid:0/短信已发送到吉信通服务器,但在获取返回信息时失败。【返回错误信息:" + ex.Message + "】");
  88. }
  89. }
  90. }
  91. /// <summary>
  92. /// 发送短信
  93. /// </summary>
  94. /// <param name="uid">帐号</param>
  95. /// <param name="pwd">密码</param>
  96. /// <param name="tos">目标手机号,多个用“,”号分隔 每次提交请不要大于100个号码</param>
  97. /// <param name="msg">内容 短信内容 最大字符数为390个 说明:第一条为70字每条,之后为67字每条</param>
  98. /// <param name="otime">定时发送时间,忽略时为即时发送</param>
  99. /// <returns></returns>
  100. public static HTTPSmsSendReturnInfo SendSmsMessages(string _uid, string _pwd, string _tos, string _msg, string _otime = "")
  101. {
  102. System.GC.Collect();
  103. Encoding myEncoding = Encoding.GetEncoding("gb2312");
  104. string uid = _uid.Trim();
  105. string pwd = _pwd.Trim();
  106. string mob = _tos.Trim();
  107. string msg = System.Web.HttpUtility.UrlEncode(_msg.Trim(), myEncoding);
  108. // string Send_URL = "http://service.winic.org:8009/sys_port/gateway/?id=" + uid + "&pwd=" + pwd + "&to=" + mob + "&content=" + msg + "&time=" + _otime;
  109. string Send_URL = InterfaceURL + "/sys_port/gateway/?id=" + uid + "&pwd=" + pwd + "&to=" + mob + "&content=" + msg + "&time=" + _otime;
  110. try
  111. {
  112. System.Threading.Thread.Sleep(3);
  113. System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(Send_URL);
  114. req.Method = "GET";
  115. req.Timeout = 600000;//默认值是 100,000 毫秒(100 秒)。
  116. using (System.Net.WebResponse wr = req.GetResponse())
  117. {
  118. System.IO.StreamReader str = new System.IO.StreamReader(wr.GetResponseStream(), myEncoding);
  119. string strMsg = str.ReadToEnd();
  120. str.Close();
  121. str.Dispose();
  122. req = null;
  123. str = null;
  124. return new HTTPSmsSendReturnInfo(strMsg);
  125. //在这里对接收到的页面内容进行处理
  126. }
  127. }
  128. catch (Exception ex){
  129. //无法连接到远程服务器
  130. try
  131. {
  132. string TimeoutLogsMsg = Send_URL + "【返回错误信息:" + ex.Message + "】";
  133. HTTPSmsInterface.TimeoutLogs.Append("\r\n【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "】" + TimeoutLogsMsg + "\r\n");
  134. }
  135. catch { }
  136. if (ex.Message.ToLower().Contains("无法连接到远程服务器") || ex.Message.ToLower().Contains("未能解析此远程名称") || ex.Message.ToLower().Contains("404") || ex.Message.ToLower().Contains("500") || ex.Message.ToLower().Contains("400"))
  137. {
  138. return new HTTPSmsSendReturnInfo("-1/Send:0/Consumption:.0/Tmoney:0/sid:0/访问远程服务器时出错,未能解析此远程名称【错误信息:"+ex.Message+"】");
  139. }
  140. else {
  141. return new HTTPSmsSendReturnInfo("000/Send:0/Consumption:.0/Tmoney:0/sid:0/短信已发送到吉信通服务器,但在获取返回信息时失败。【返回错误信息:" + ex.Message + "】");
  142. }
  143. }
  144. }
  145. private static StringBuilder timeoutLogs = new StringBuilder();
  146. /// <summary>
  147. /// 超时记录日志
  148. /// </summary>
  149. public static StringBuilder TimeoutLogs
  150. {
  151. get { return HTTPSmsInterface.timeoutLogs; }
  152. set { HTTPSmsInterface.timeoutLogs = value; }
  153. }
  154. /* /// <summary>
  155. /// 发送短信
  156. /// </summary>
  157. /// <param name="uid">帐号</param>
  158. /// <param name="pwd">密码</param>
  159. /// <param name="tos">目标手机号,多个用“,”号分隔 每次提交请不要大于100个号码</param>
  160. /// <param name="msg">内容 短信内容 最大字符数为390个 说明:第一条为70字每条,之后为67字每条</param>
  161. /// <param name="otime">定时发送时间,忽略时为即时发送</param>
  162. /// <returns></returns>
  163. public static HTTPSmsSendReturnInfo SendSmsMessages(string _uid, string _pwd, string _tos, string _msg, string _otime = "")
  164. {
  165. try
  166. {
  167. string uid = _uid.Trim();
  168. string pwd = _pwd.Trim();
  169. string mob = _tos.Trim();
  170. string msg = _msg.Trim();
  171. string Send_URL = "http://service.winic.org:8009/sys_port/gateway/?id=" + uid + "&pwd=" + pwd + "&to=" + mob + "&content=" + msg + "&time=" + _otime;
  172. //____________________________
  173. MSXML2.XMLHTTP xmlhttp = new MSXML2.XMLHTTP();
  174. xmlhttp.open("GET", Send_URL, false, null, null);
  175. xmlhttp.send("");
  176. MSXML2.XMLDocument dom = new XMLDocument();
  177. Byte[] b = (Byte[])xmlhttp.responseBody;
  178. //string Flag = System.Text.ASCIIEncoding.UTF8.GetString(b, 0, b.Length);
  179. string andy = System.Text.Encoding.GetEncoding("GB2312").GetString(b).Trim();
  180. return new HTTPSmsSendReturnInfo(andy);
  181. }
  182. catch
  183. {
  184. return new HTTPSmsSendReturnInfo("-1/Send:0/Consumption:.0/Tmoney:0/sid:0");
  185. }
  186. }*/
  187. /// <summary>
  188. /// 查询余额
  189. /// </summary>
  190. /// <param name="uid"></param>
  191. /// <param name="pwd"></param>
  192. /// <returns></returns>
  193. public static string GetBalances(string uid,string pwd)
  194. {
  195. string Myuid = uid.Trim();
  196. string Mypwd = pwd.Trim();
  197. string Send_URL = "http://service.winic.org:8009/webservice/public/remoney.asp?uid=" + uid + "&pwd=" + pwd + "";
  198. //____________________________
  199. MSXML2.XMLHTTP xmlhttp = new MSXML2.XMLHTTP();
  200. xmlhttp.open("GET", Send_URL, false, null, null);
  201. xmlhttp.send("");
  202. MSXML2.XMLDocument dom = new XMLDocument();
  203. Byte[] b = (Byte[])xmlhttp.responseBody;
  204. //string Flag = System.Text.ASCIIEncoding.UTF8.GetString(b, 0, b.Length);
  205. string andy = System.Text.Encoding.GetEncoding("GB2312").GetString(b).Trim();
  206. return SendSmsResults.GetResults(andy);
  207. }
  208. }
  209. }