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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章