纯AS3下访问WebService方法总汇
今天介绍一下纯AS3下访问WebService的方法...
如果你说Flex就已经身带了这个类..
或者有第三方的类..
那可以不用继续往下看..因为我不是介绍"WebService类的使用方法"..
需要的请自行搜索相应的结果..或看自己看帮助..
谢谢合作..
至于WebService的概念我就不多说了..不明白的Google或Baidu一下就行了..
今天我们会用以下的WebService来作一系列的测试,该ws可以返回指定手机号码的归属..
由http://www.webxml.com.cn/
getDatabaseInfo
获得国内手机号码归属地数据库信息
输入参数:无;
返回数据:一维字符串数组(省份 城市 记录数量)。
getMobileCodeInfo
获得国内手机号码归属地省份、地区和手机卡类型信息
输入参数:mobileCode = 字符串(手机号码,最少前7位数字),userID = 字符串(商业用户ID) 免费用户为空字符串;
返回数据:字符串(手机号码:省份 城市 手机卡类型)。
我们以下的测试会以getMobileCodeInfo为例子来进行..
方法名getMobileCodeInfo,需要两个参数..
一个为mobileCode,即手机号码,下面的例子均使用13800138000
第二为userID,留空即可
方法1:GET
有部份的ws支持GET方法.对于这类型的ws.我们可以直接使用get方式来获取数据
格式为:WS地址/方法?参数=值[&参数=值...]
像上面的方式..
我们直接拼接这样一个URL地址:
http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode=13800138000&userID=
即可直接访问..浏览器打开后显示
在AS3中..我们使用URLLoader来加载..代码如下:
?
POST内容为 ?
分析其中POST内容..发现为一个XML格式字符串请求..
格式为
其中
getMobileCodeInfo为方法名
mobileCode为参数
13800138000为mobileCode的值
http://WebXml.com.cn/为该ws的Namespace
tns为任意名字..这里为tns(targetNamespace简写?)
知道格式后..我们就可以开始在AS3里拼接这些数据..然后访问WS
代码如下: ?
方法4:自定义WebService类
经过方法三..我们已经知道了WebService的访问实现原理..
不过实现起来非常麻烦..需要手动去写方法名..参数名..ns等
其实这些信息..都在ws中有描述..
Flex的类和第三方的WebService类也是通过不同的手段..
最后生成请求的XML..
以方便的访问WS..
以Flex的WebService为例..
首先访问 地址?WSDL
如http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL
获取方法及相应的参数名..(types.schema.element即是相应的方法,每个element下为参数)
获取ns(types.schema中的@targetNamespace??)
然后调用相应方法的时候就可以自动拼接请求内容和requestHeaders中的SOAPAction
再进行访问
当中还可以继承flash.utils.Proxy..
并重写callProperty..
即可实现像Flex的WebService在中的..
webService.方法名(...参数)这样的调用格式..
详细参数flash.utils.Proxy...?