新浪短信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+"!");//加一个感叹号,漂亮一点:)

posted @ 2004-04-05 16:52  张逸  阅读(11584)  评论(18编辑  收藏  举报