注册 登录
Office中国论坛/Access中国论坛 返回首页

的个人空间 http://www.office-cn.net/?0 [收藏] [复制] [分享] [RSS]

日志

【分享】在Access2003中使用Web Service

已有 2191 次阅读2008-3-23 14:29 |个人分类:Access

10楼有例子下载


Web Service是个时尚的话题,在很多领域都有应用,Access能否使用呢,回答是当然的,下面我就用新浪提供的短信发送Web Service来给大家做过介绍,相信你们会喜欢的。

1.下载并安装Microsoft Office 2003 Web Services Toolkit 2.01  下载地址:http://www.microsoft.com/downloa ... p;displaylang=zh-cn

2.添加对Microsoft Office Soap Type Library v3.0的引用,Microsoft Office Soap Type Library v3.0的dll文件位于:C:\Program Files\Common Files\Microsoft Shared\OFFICE11\MSSOAP30.DLL,随 Microsoft Office 2003 System 一起安装的。

3.打开Access至VBE,这时会在工具菜单的引用下面多一个Web服务引用。单击web引用,打开web服务引用对话框。

4.单击web服务URL单选钮,在URL中输入:http://smsinter.sina.com.cn/ws/smswebservice0101.wsdl,单击搜索按钮,在搜索结果框中勾选SMSWS,然后单击下方的添加按钮。

5.这时Microsoft Office 2003 Web Services Toolkit会自动创建一个类模块。类模块内容如下:

CODE:

*****************************************************************
'该类是由 Microsoft Office 2003 Web Services Toolkit 创建的。
'
'创建时间: 10/5/2007 12:41:01 AM
'
'说明:
'该类是 Web 服务
' 的 Visual Basic for Applications 类表示形式,这是由 http://smsinter.sina.com.cn/ws/smswebservice0101.wsdl 定义的。
'
'使用:
'将变量声明为新的 clsws_SMSWS,然后编写代码以
'使用该类所提供的方法。
'示例:
' Dim ExampleVar as New clsws_SMSWS
' debug.print ExampleVar.wsm_sendXml(“示例输入”)
'
'有关更多信息,请参阅 Microsoft Office 2003
'Web Services Toolkit 帮助中的“复杂类型”。
'
'对此类中的代码所做的更改可能导致错误的行为。
'
'*****************************************************************
'声明专用类变量。
Private sc_SMSWS As SoapClient30
Private Const c_WSDL_URL As String = "http://smsinter.sina.com.cn/ws/smswebservice0101.wsdl"
Private Const c_SERVICE As String = "SMSWS"
Private Const c_PORT As String = "SMSWebServiceSoapPort"
Private Const c_SERVICE_NAMESPACE As String = "http://outlook.microsoft.com/add-ins/SMS/wsdl/"
Private Sub Class_Initialize()
'*****************************************************************
'每次实例化该类时都将调用此子例程。
'将 sc_ComplexTypes 创建为新的 SoapClient30,然后
'用在
'http://smsinter.sina.com.cn/ws/smswebservice0101.wsdl 中找到的 WSDL 文件实例化 sc_ComplexTypes.mssoapinit2。
'*****************************************************************
Dim str_WSML As String
str_WSML = ""
Set sc_SMSWS = New SoapClient30
sc_SMSWS.MSSoapInit2 c_WSDL_URL, str_WSML, c_SERVICE, c_PORT, c_SERVICE_NAMESPACE
'使用 Internet Explorer 的 LAN 设置中定义的代理服务器,方法是
'将 ProxyServer 设置为
sc_SMSWS.ConnectorProperty("roxyServer") = ""
'如果 Internet Explorer 被设置为自动检测,则自动检测代理设置,
'方法是将 EnableAutoProxy 设置为真
sc_SMSWS.ConnectorProperty("EnableAutoProxy") = True

End Sub
Private Sub Class_Terminate()
'*****************************************************************
'将在每次析构该类时调用此子例程。
'将 sc_ComplexTypes 设置为 Nothing。
'*****************************************************************
'错误捕获
On Error GoTo Class_TerminateTrap
Set sc_SMSWS = Nothing
Exit Sub
Class_TerminateTrap:
SMSWSErrorHandler ("Class_Terminate")
End Sub
Private Sub SMSWSErrorHandler(str_Function As String)
'*****************************************************************
'此子例程是类错误处理程序。当任何类子例程或函数
'遇到错误时,都可以从该子例程或函数调用此子例程。然后,它将引发错误并提供
'调用子例程或函数的名称。
'*****************************************************************
'SOAP 错误
If sc_SMSWS.FaultCode <> "" Then
Err.Raise vbObjectError, str_Function, sc_SMSWS.FaultString
'非 SOAP 错误
Else
Err.Raise Err.Number, str_Function, Err.Description
End If
End Sub
Public Function wsm_sendXml(ByVal str_Carrier As String, ByVal str_Id As String, ByVal str_Password As String, ByVal str_ToMobile As String, ByVal str_Message As String, ByVal str_MsgType As String) As String
'*****************************************************************
'从 http://smsinter.sina.com.cn/ws/smswebservice0101.wsdl 创建的代理函数。
'*****************************************************************
'错误捕获
On Error GoTo wsm_sendXmlTrap
wsm_sendXml = sc_SMSWS.sendXml(str_Carrier, str_Id, str_Password, str_ToMobile, str_Message, str_MsgType)
Exit Function
wsm_sendXmlTrap:
SMSWSErrorHandler "wsm_sendXml"
End Function
从代码可以看出类模块提供了一个公共方法wsm_sendXml,这就是我们需要的。

5.我们就可以通过下面的方法使用了:
DiDim ws As New clsws_SMSWS
ws.wsm_sendXml      。。。参数省略

参数说明:
carrier:运营商名称,这里面可以随便输,不过似乎没有任何显示,不知道里面有没有其它奥秘。
userid:您在新浪无线上注册的手机ID,即http://sms.sina.com.cn
password:您在新浪无线上注册手机时所使用的密码。
mobilenumber:对方的手机号码;
content:发送短消息的内容;
msgtype:发送短消息的类型,目前仅使用文本短信方式,使用的是“Text”。


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

[ 本帖最后由 fan0217 于 2007-10-6 12:09 编辑 ]

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-5 02:49 , Processed in 0.050340 second(s), 14 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部