C#利用sina提供Web Service实现短信发送

 我想当很多读者一看到本文的题目一定会想本文内容一定非常深奥,并且作者一定知道了电信的发送短信的网关地址,其实并非如此。本文其实是利用一个现成的资源,一个可发送短信的Web Serviec。这个Web Service就是新浪网就提供的一个,可供用户直接调用的发送短消息的Web Service。这个Service的地址是http://smsinter.sina.com.cn/ws/smswebservice0101.wsdl。在这个Service中提供了一个发送短消息的方法"sendXml"。此方法的语法格式如下:

string sendXml (carrier , userid , password , mobilenumber , content , msgtype )

  sendXml方法中的六个参数均为string类型,并且sendXml方法的返回值也是string类型。

  以下是sendXml方法中的六个参数的具体说明:

  ·carrier:运营商名称,具体使用时此参数并没有什么具体要求,即这里面可以随便输,输入的字符串也不会在对方手机中有任何显示。

  ·userid:在新浪网上注册的手机号,注册手机所用的地址是:http://sms.sina.com.cn,具体注册方法下面会具体介绍。

  ·password:您在新浪网成功注册手机后,新浪网所反馈来的密码。

  ·mobilenumber:要发送短信到对方的手机号码。

  ·content:所要发送短消息的内容。

  ·msgtype:发送短消息的类型,由于本文发送的不是彩信,所以输入"Text"

  调用此Web Service只需在Visual C#开发环境中直接添加Web引用,把该地址输入即可,就可以使用此Web Service中的sendXml方法发送短消息了。当然发送短消息的机器必须接入互联网。

资费标准请参看新浪无线网站上的相关说明,应该是一条一角钱,不过也或者是一条两角线。由于其后台可能使用了消息队列机制,在繁忙的时候,可能会有几秒钟延迟。

http://www.cnblogs.com/wayfarer/archive/2004/04/05/5231.html 张逸的博客(06年学习petshop时就是他的fans啦,哈哈)

今天到博客堂,看见开心就好发的这个贴子,感觉很好。

新浪发送短信的Web Service资源的该问地址为:http://smsinter.sina.com.cn/ws/smswebservice0101.wsdl,这是一个WSDL文件格式,您可以直接在您的VS.NET环境中直接添加Web引用,把该地址输入即可。

示例:

把Visual Stuido .Net的当前窗口切换到Form1.cs的代码编辑窗口,并用下列代码替换From1.cs中的button1的Click事件对应的代码,下列代码的作用是调用引入的Web Service中提供的sendXml方法向指定手机发送短信息:

private void button1_Click ( object sender , System.EventArgs e )
{
 短信.cn.com.sina.smsinter.SMSWS ws = new 短信.cn.com.sina.smsinter.SMSWS ( ) ;
 string result = ws.sendXml ( "Sina" ,textBox1.Text ,textBox2.Text ,textBox3.Text ,textBox4.Text ,"new" ) ;
 MessageBox.Show ( result ) ;
}

我的说明:通过这个WebService编写发送短信的程序,就和Hello World一样简单。有兴趣的朋友自己就可以短信程序了。虽然节约不了什么money,至少打字比在手机上快些嘛。何况是自己写的,总有些自豪不是?

PDAFan论坛上已经有个实例了。http://bbs.pdafans.com/viewthread.php?tid=9613

我又给他增加了一点功能,至少使用起来要友好些吧!

下面是我的说明:

我用了一下这个程序.觉得遗憾的是发送后的提示信息太不友好了.我分析了sendXml()方法的返回结果.是一个类似xml格式的字符串,其中提示信息放在标签<message>,例如:<Message>无效手机号码</Message>.

我不知道字符串类是否有与xml转换的方法.但我利用截取子串方法实现如下的方法:

//
截取处于开始字符串和结束字符串中间的字符串,尤其适合得到处于xml标签之间的字符串内容;
private string GetSubString(string mainString,string startString,string endString)
{
int start = mainString.IndexOf(startString);
int end = mainString.IndexOf(endString);
if (start<0||end<0)
{
return null;
}
else
{
string result = mainString.Substring(start+startString.Length,end-start-startString.Length);
return result;
}
}

其中mainString为子串,startString为起始标签,endString为结束标签.具体调用如下:

string start = "<Message>";
string end = "</Message>";
string mainString = WebServiceName.SendXml(parameter...);
string result = GetSubString(mainString,start,end);

然后用MessageBox显示出来,发短信的用户就知道是否发送成功了.
MessageBox.Show(result+"!");//
加一个感叹号,漂亮一点:)

 

http://www.chinacs.net/archives/5/2006/3591.html

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值