一种是http请求的方式,另一种就是提供WebService接口供调用的。

  1. //服务商 sms.webchinese.cn
  2. //sms_url="http://sms.webchinese.cn/web_api/?Uid=账号&Key=接口密钥&smsMob=手机号码&smsText=短信内容"
  3. /// <summary>
  4. /// 发送短信接口sms.webchinese.cn
  5. /// </summary>
  6. /// <param name="mobilenumber">手机号,多个号码用‘,’分开</param>
  7. /// <param name="message">信息内容</param>
  8. /// <returns>
  9. /// 返回值情况如下
  10. /// -1  没有该用户账户
  11. ///-2   密钥不正确 [查看密钥]
  12. ///-3   短信数量不足
  13. ///-11  该用户被禁用
  14. ///-14  短信内容出现非法字符
  15. ///-4   手机号格式不正确
  16. ///-41  手机号码为空
  17. ///-42  短信内容为空
  18. ///大于0  短信发送数量
  19. /// </returns>
  20. public int SendMSG(string mobilenumber, string message)
  21. {
  22. //发送短信请求的地址
  23. string url = string.Format("http://sms.webchinese.cn/web_api/?Uid=账号&Key=接口密钥&smsMob={0}&smsText={1}", mobilenumber, message);
  24. string strRet = null;
  25. url = HttpUtility.UrlEncode(url);//urlencode
  26. if (url == null || url.Trim().ToString() == "")
  27. {
  28. return 0;
  29. }
  30. try
  31. {
  32. HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(url);
  33. hr.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
  34. hr.Method = "GET";
  35. hr.Timeout = 30 * 60 * 1000;
  36. WebResponse hs = hr.GetResponse();
  37. Stream sr = hs.GetResponseStream();
  38. StreamReader ser = new StreamReader(sr, Encoding.Default);
  39. strRet = ser.ReadToEnd();
  40. }
  41. catch (Exception)
  42. {
  43. strRet = null;
  44. }
  45. if (strRet == null || strRet == "") return 0;
  46. return Convert.ToInt32(strRet);
  47. }
  48. #endregion
  49. #region www.56dxw.com 发送短信
  50. //添加服务引用  http://jiekou.56dxw.com/WebServiceInterface.asmx
  51. //输入命名空间:MobileMessage_56
  52. private MobileMessage_56.WebServiceInterfaceSoapClient _ws_56 = null;
  53. /// <summary>
  54. /// www.56dxw.com短信接口服务
  55. /// </summary>
  56. public MobileMessage_56.WebServiceInterfaceSoapClient ws_56
  57. {
  58. get
  59. {
  60. if (_ws_56 == null) _ws_56 = new MobileMessage_56.WebServiceInterfaceSoapClient();
  61. return _ws_56;
  62. }
  63. }
  64. private string username_56 = "test";//网站的用户名
  65. private string password_56 = "test";//网站的登陆密码
  66. private string cid_56 = "";//企业id
  67. /// <summary>
  68. /// 发送短信接口函数 www.56dxw.com
  69. /// </summary>
  70. /// <param name="mobilenumber">手机号英文半角逗号隔开,一次1000个以内</param>
  71. /// <param name="message">信息内容</param>
  72. /// <returns>
  73. /// -1  用户名密码不正确
  74. ///-2   内容不能大于70个字
  75. ///-3   验证此平台是否存在
  76. ///-4   提交号码不能为空或客户余额为0
  77. ///-5   客户剩余条数不够要发送的短信数量
  78. ///-6   非法短信内容
  79. ///-7   返回系统故障
  80. ///-8   网络性错误,请稍后再试
  81. ///1    代表发送成功
  82. /// </returns>
  83. public int SendMSG_56(string mobilenumber, string message)
  84. {
  85. string sendtime = "";//格式:"2010-1-27 11:10:20"---发送时间,为空则立即发送
  86. string smsnumber = "";//平台
  87. return ws_56.SendNote(mobilenumber, message, username_56, password_56, cid_56, sendtime, smsnumber);
  88. }
  89. /// <summary>
  90. /// 查询剩余短信条数
  91. /// </summary>
  92. /// <returns>
  93. /// -1  代表用户名密码不正确
  94. /// 其它值 代表返回具体条数
  95. /// </returns>
  96. public int ReturnUserFullMoney_56()
  97. {
  98. return ws_56.ReturnUserFullMoney(username_56, password_56, cid_56);
  99. }
  100. /// <summary>
  101. /// 修改密码
  102. /// </summary>
  103. /// <param name="oldpwd">旧密码</param>
  104. /// <param name="newpwd">新密码</param>
  105. /// <returns>
  106. /// 1   代表密码修改成功
  107. /// -1  代表密码编辑失败
  108. /// -2  用户名密码错误
  109. /// </returns>
  110. public int EditUserPwd(string oldpwd,string newpwd)
  111. {
  112. return ws_56.EditUserPwd(username_56, oldpwd, newpwd, cid_56);
  113. }
  114. #endregion

asp.net两种方式的短信接口使用(提供接口的都是收费的)的更多相关文章

  1. Java实现线程的两种方式?Thread类实现了Runnable接口吗?

    Thread类实现了Runnable接口吗? 我们看看源码中对与Thread类的部分声明 public class Thread implements Runnable { /* Make sure ...

  2. springboot 注册服务注册中心(zk)的两种方式

    在使用springboot进行开发的过程中,我们经常需要处理这样的场景:在服务启动的时候,需要向服务注册中心(例如zk)注册服务状态,以便当服务状态改变的时候,可以故障摘除和负载均衡. 我遇到过两种注 ...

  3. Map集合的遍历方式以及TreeMap集合保存自定义对象实现比较的Comparable和Comparator两种方式

    Map集合的特点 1.Map集合中保存的都是键值对,键和值是一一对应的 2.一个映射不能包含重复的值 3.每个键最多只能映射到一个值上 Map接口和Collection接口的不同 Map是双列集合的根 ...

  4. Android手机上监听短信的两种方式

    Android手机上监听短信有两种方式: 1. 接受系统的短信广播,操作短信内容. 优点:操作方便,适合简单的短信应用. 缺点:来信会在状态栏显示通知信息. AndroidManifest.xml: ...

  5. android 发送短信的两种方式,以及接收报告和发送报告

               android发送短信,以及接收报告和发送报告          android中发送短信其实有两种方式,这个和打电话类似,大家可以了解一下:    一.调起系统发短信功能    ...

  6. ASP.NET Web API接受AngualrJS的QueryString的两种方式

    ASP.NET Web API如何接受来自AngualrJS的QueryString呢?本篇体验两种方式. 第一种方式:http://localhost:49705/api/products?sear ...

  7. Asp.net Web API 返回Json对象的两种方式

    这两种方式都是以HttpResponseMessage的形式返回, 方式一:以字符串的形式 var content = new StringContent("{\"FileName ...

  8. ASP.NET 生成二维码(采用ThoughtWorks.QRCode和QrCode.Net两种方式)

    最近做项目遇到生成二维码的问题,发现网上用的最多的是ThoughtWorks.QRCode和QrCode.Net两种方式.访问官网看着例子写了两个Demo,使用过程中发现两个都挺好用的,Thought ...

  9. Asp.net MVC在Razor中输出Html的两种方式

    http://qubernet.blog.163.com/blog/static/177947284201485104616368/ Razor中所有的Html都会自动编码,这样就不需要我们手动去编码 ...

随机推荐

  1. VB.NET操作Excel

    VB.NET操作Excel的基本方法与例子:

  2. 使用python抓取百度搜索、百度新闻搜索的关键词个数

    由于实验的要求,需要统计一系列的字符串通过百度搜索得到的关键词个数,于是使用python写了一个相关的脚本. 在写这个脚本的过程中遇到了很多的问题,下面会一一道来. ps:我并没有系统地学习过pyth ...

  3. VS2015编译boost1.62

    VS2015编译boost1.62 Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有 ...

  4. php模拟http请求的方法

    我在这里终结了三种方法 第一种方法:fsockopen $flag = 0; $post = ''; $errno = ''; $errstr = ''; //要post的数据 $argv = arr ...

  5. 【项目】百度搜索广告CTR预估

    -------倒叙查看本文. 6,用auc对测试的结果进行评估: auc代码如下: #!/usr/bin/env python import sys def auc(labels,predicted_ ...

  6. js日期相关

    时间戳转正常日期时间 1469512964000 —> 2016/7/26 下午2:02 var getLocalTime = function(nS) { // 13位时间戳 return n ...

  7. Nodejs 饭店

     一个Node.js饭店的发展历程 前面的一堆理论似乎不太好明白,最后讲一个关于饭店发展历程的故事作为结尾吧.     第一年 饭店开张,只有一个厨师(同时还兼任老板.服务员.打荷.收银员),当一个客 ...

  8. connect/express 的参考

    1.Node.js[5] connect & express简介    对connect中间件的分类比较容易理解. http://www.cnblogs.com/luics/archive/2 ...

  9. zabbix安装配置界面点击next step没反应

    修改/var/lib/php/session/宿主或者添加777权限 看到有个人说这个不能用,一开始我也没用,找了各种方式都不行,最后死马当作活马医,改了下权限,卧槽,一下子就OK了,日

  10. 使用野狗(Wilddog)云setValue写入数据

    - (void)viewDidLoad { [super viewDidLoad]; //创建野狗实例化对象 用于随时监听数值变化 Wilddog *myRootRef = [[Wilddog all ...