新浪短信Web Service
今天到博客堂,看见开心就好发的这个贴子,感觉很好。
新浪发送短信的Web Service资源的该问地址为:http://smsinter.sina.com.cn/ws/smswebservice0101.wsdl,这是一个WSDL文件格式,您可以直接在您的VS.NET环境中直接添加Web引用,把该地址输入即可。
该Web Service就只有一个方法,即string sendXml(carrier,userid,password,mobilenumber,content,msgtype)。各个参数全部为string类型,其含义基本如下(可能不正确)。
- carrier:运营商名称,这里面可以随便输,不过似乎没有任何显示,不知道里面有没有其它奥秘。
- userid:您在新浪无线上注册的手机ID,即http://sms.sina.com.cn。
- password:您在新浪无线上注册手机时所使用的密码。
- mobilenumber:对方的手机号码;
- content:发送短消息的内容;
- msgtype:发送短消息的类型,我估计支持彩信,不过我目前仅使用文本短信方式,似乎随便输什么都可以,我使用的是“Text”。
示例如下:
Sina.SMSWS ws = new Sina.SMSWS();
string result = ws.sendXml("Sina",textBox1.Text,textBox2.Text,textBox3.Text,textBox4.Text,"new");
资费标准请参看新浪无线网站上的相关说明,应该是一条一角钱,不过也或者是一条两角线。由于其后台可能使用了消息队列机制,在繁忙的时候,可能会有几秒钟延迟。
我的说明:通过这个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+"!");//加一个感叹号,漂亮一点:)