当前位置:文档之家› 使用javascript调用webservice示例

使用javascript调用webservice示例

使用javascript调用webservice示例
使用javascript调用webservice示例

使用javascript调用webservice示例

再javascript中使用soap调用webservice的示例代码

代码再IE6和FF测试通过,对于c#写的webservice和java(xfire)写的,都测试过,没有问题

此代码原型来源于https://www.doczj.com/doc/221961104.html,/的javascript soapclient

发现这个下载的js只能用于调用c#的webservice,所以利用mootools,重新封装,达到IE和火狐的兼容的同时,兼容java和c#

(再例子中使用的mootools.v1.11.js 文件,做过修改)

客户端js调用代码如下

js 代码

1.function ajaxRequest()

2. {

3.var url = "http://localhost:88/webservicedemo.asmx";

4.

5.//设置webService传入参数

6.//

7.//注意:

8.//

9.// 调用.Net 写的webservice(如例子中的

webservicedemo.asmx)

10. // HelloTo(String name) 针对name参数必须

写成 wqj,还有更多参数一样写,使用名称匹配

11. // 传入的参数数量可以不等于(多于或少于)方法

要求的参数

12. //

13. // 调用java(xfire) 发布的webService

14. // 传入的参数必须与调用方法的参数数量相等,且

按传入值的顺序进行匹配

15. //

16.

17. var para = "wqj"; 这里应该是一个标准的xml形式,源码贴出

来时被虑掉了,请参看附件源码

18.

19. var op = {

20. data:para,

21. onComplete: showResponse,

22. onFailure:showError,

23. update:'ajaxBack'

24. };

25.

26. var service = new WebService(url,"HelloTo",op);

27. service.request();

28. return false;

29. }

30. function showError(obj)

31. {

32. //obj 是一个xmlHttpRequest对象

33. alert("error");

34. }

35. function showResponse(requestText,requestXML)

36. {

37. //requestText 返回的文本

38. //requestXML 返回的XML

39. alert("ok");

40. }

WebService类的代码如下(webservice.js)

js 代码

1.var WSDLS = {};

2.

3.var WebService = new Class({

4.

5. url : '',

6. method : '',

7. options:

8. {

9. method:'GET',

10. data: null,

11. update: null,

12. onComplete: Class.empty,

13. onError:Class.empty,

14. evalScripts: false,

15. evalResponse: false

16. },

17.

18. initialize: function(url,method,options)

19. {

20. this.url = url;

21. this.method = method;

22. this.options = options;

23.

24. },

25.

26. request : function()

27. {

28. var wsdl = WSDLS[this.url];

29. if(!wsdl)

30. {

31. var op = {method:'GET',async: false};

32. var wsdlAjax = new XHR(op).send(this.url + "?wsdl",

null);

33. wsdl = wsdlAjax.transport.responseXML;

34. WSDLS[this.url] = wsdl;

35. }

36. this.setSoap(wsdl);

37. },

38.

39. setSoap : function(wsdl)

40. {

41.

42. var ns =

(wsdl.documentElement.attributes["targetNamespace"] + "" ==

"undefined") ?

wsdl.documentElement.attributes.getNamedItem("targetNamespace") .nodeValue :

wsdl.documentElement.attributes["targetNamespace"].value;

43. var sr =

44. "" +

45. ""

46. "xmlns:xsi=\"https://www.doczj.com/doc/221961104.html,/2001/XMLSchema-i

nstance\" " +

47. "xmlns:xsd=\"https://www.doczj.com/doc/221961104.html,/2001/XMLSchema\"

" +

48. "xmlns:soap=\"https://www.doczj.com/doc/221961104.html,/soap/e

nvelope/\">" +

49. "" +

50. "<" + this.method + " xmlns=\"" + ns + "\">" +

51. (this.options.data ===

null ?"":this.options.data) +

52. " + this.method + ">;

53.

54. this.options.method = 'post';

55. this.options.data = null;

56.

57. var soapaction = ((https://www.doczj.com/doc/221961104.html,stIndexOf("/") != ns.length - 1) ?

ns + "/" : ns) + this.method;

58.

59. var soapAjax = new Ajax(this.url,this.options);

60. soapAjax.setHeader("SOAPAction", soapaction);

61. soapAjax.setHeader("Content-type", "text/xml;

charset=utf-8");

62. soapAjax.request(sr);

63. }

64.

65.});

在第一个版本中存在以下问题

1. 不能根据webservice的要求输入参数自动组织参数

2. 没有处理返回值

3.一旦webservice调用过程出错,会形成一个死循环(一直弹出error)

V2 说明

1. 解决第一版中死循环的问题

2. 统一输入参数的传入形式(与mootools的ajax使用方式完全一致),形式如name=wqj&age=20&........

3. 自动根据参数名对应的值,组织webservice的传入参数,只根据webservice 要求的参数名查找对应的值

与顺序不再有关系.(对于xfire中的输入参数使用名称 in0,in1........)

传入的参数数量也不再要求一致,多的自动丢弃,少的自动传空

4. 对于返回的XML,增加提取方法,返回需要的关键返回值(去掉XML的框框)

详细参照附件源码,下面是部分关键代码

?

?JavaScriptSOAP.rar (47.1 KB)

?描述: js调用webservice示例

?下载次数: 443

?JavaScriptSOAP(V2).rar (49.5 KB)

?描述: js,sope第二版

?下载次数: 761

引用地址:https://www.doczj.com/doc/221961104.html,/topic/98182

代码再IE6和FF测试通过,对于c#写的webservice和java(xfire)写的,都测试过,没有问题

此代码原型来源于https://www.doczj.com/doc/221961104.html,/的javascript soapclient

发现这个下载的js只能用于调用c#的webservice,所以利用mootools,重新封装,达到IE和火狐的兼容的同时,兼容java和c#

(再例子中使用的 mootools.v1.11.js 文件,做过修改)

客户端js调用代码如下

js 代码

1.function ajaxRequest()

2. {

3. var url = "http://localhost:88/webservicedemo.asmx";

4.

5. //设置webService传入参数

6. //

7. //注意:

8. //

9. // 调用.Net 写的webservice(如例子中的

webservicedemo.asmx)

10. // HelloTo(String name) 针对name参数必须写

wqj,还有更多参数一样写,使用名称匹配

11. // 传入的参数数量可以不等于(多于或少于)方法要

求的参数

12. //

13. // 调用java(xfire) 发布的webService

14. // 传入的参数必须与调用方法的参数数量相等,且

按传入值的顺序进行匹配

15. //

16.

17. var para = "wqj"; 这里应该是一个标准的xml

形式,源码贴出来时被虑掉了,请参看附件源码

18.

19. var op = {

20. data:para,

21. onComplete: showResponse,

22. onFailure:showError,

23. update:'ajaxBack'

24. };

25.

26. var service = new WebService(url,"HelloTo",op);

27. service.request();

28. return false;

29. }

30. function showError(obj)

31. {

32. //obj 是一个xmlHttpRequest对象

33. alert("error");

34. }

35. function showResponse(requestText,requestXML)

36. {

37. //requestText 返回的文本

38. //requestXML 返回的XML

39. alert("ok");

40. }

WebService类的代码如下(webservice.js)

js 代码

1.

2.var WSDLS = {};

3.

4.var WebService = new Class({

5.

6. url : '',

7. method : '',

8. options:

9. {

10. method:'GET',

11. data: null,

12. update: null,

13. onComplete: Class.empty,

14. onError:Class.empty,

15. evalScripts: false,

16. evalResponse: false

17. },

18.

19. initialize: function(url,method,options)

20. {

21. this.url = url;

22. this.method = method;

23. this.options = options;

24.

25. },

26.

27. request : function()

28. {

29. var wsdl = WSDLS[this.url];

30. if(!wsdl)

31. {

32. var op = {method:'GET',async: false};

33. var wsdlAjax = new XHR(op).send(this.url + "?wsdl",

null);

34. wsdl = wsdlAjax.transport.responseXML;

35. WSDLS[this.url] = wsdl;

36. }

37. this.setSoap(wsdl);

38. },

39.

40. setSoap : function(wsdl)

41. {

42.

43. var ns = (wsdl.documentElement.attributes["targetNamesp

ace"] + "" == "undefined") ? wsdl.documentElement.attributes.ge tNamedItem("targetNamespace").nodeValue : wsdl.documentElement.

attributes["targetNamespace"].value;

44. var sr =

45. "" +

46. ""

47. "xmlns:xsi=\"https://www.doczj.com/doc/221961104.html,/2001/XMLSchema-i

nstance\" " +

48. "xmlns:xsd=\"https://www.doczj.com/doc/221961104.html,/2001/XMLSchema\"

" +

49. "xmlns:soap=\"https://www.doczj.com/doc/221961104.html,/soap/e

nvelope/\">" +

50. "" +

51. "<" + this.method + " xmlns=\"" + ns + "\">" +

52. (this.options.data === null ?"":this.optio

ns.data) +

53. " + this.method + ">;

54.

55. this.options.method = 'post';

56. this.options.data = null;

57.

58. var soapaction = ((https://www.doczj.com/doc/221961104.html,stIndexOf("/") != ns.length - 1

) ? ns + "/" : ns) + this.method;

59.

60. var soapAjax = new Ajax(this.url,this.options);

61. soapAjax.setHeader("SOAPAction", soapaction);

62. soapAjax.setHeader("Content-type", "text/xml; charset=u

tf-8");

63. soapAjax.request(sr);

64. }

65.

66.});

在第一个版本中存在以下问题

1. 不能根据webservice的要求输入参数自动组织参数

2. 没有处理返回值

3.一旦webservice调用过程出错,会形成一个死循环(一直弹出error)

V2 说明

1. 解决第一版中死循环的问题

2. 统一输入参数的传入形式(与mootools的ajax使用方式完全一致),形式如name=wqj&age=20&........

3. 自动根据参数名对应的值,组织webservice的传入参数,只根据webservice 要求的参数名查找对应的值

与顺序不再有关系.(对于xfire中的输入参数使用名称 in0,in1........)

传入的参数数量也不再要求一致,多的自动丢弃,少的自动传空

4. 对于返回的XML,增加提取方法,返回需要的关键返回值(去掉XML的框框) 详细参照附件源码,下面是部分关键代码

WebService类的代码如下(webservice.js)

js 代码

1.var WSDLS = {};

2.

3.var WebService = new Class({

4.

5. url : '',

6. method : '',

7. options:

8. {

9. method:'GET',

10. data: null,

11. update: null,

12. onComplete: Class.empty,

13. onError:Class.empty,

14. evalScripts: false,

15. evalResponse: false

16. },

17.

18. initialize: function(url,method,options)

19. {

20. this.url = url;

21. this.method = method;

22. this.options = options;

23. },

24.

25. request : function()

26. {

27. var wsdl = WSDLS[this.url];

28. if(!wsdl)

29. {

30. var op = {method:'GET',async: false};

31. var wsdlAjax = new XHR(op).send(this.url + "?wsdl",

null);

32. wsdl = wsdlAjax.transport.responseXML;

33. WSDLS[this.url] = wsdl;

34. }

35.

36. this.setSoap(wsdl);

37. },

38.

39. setSoap : function(wsdl)

40. {

41. var paraXML = this.getParaXML(wsdl);

42. alert(paraXML);

43. var ns = (wsdl.documentElement.attributes["targetNamesp

ace"] + "" == "undefined") ? wsdl.documentElement.attributes.ge tNamedItem("targetNamespace").nodeValue : wsdl.documentElement.

attributes["targetNamespace"].value;

44. var sr =

45. "" +

46. " +

47. "xmlns:xsi=\"https://www.doczj.com/doc/221961104.html,/2001/XMLSchema-i

nstance\" " +

48. "xmlns:xsd=\"https://www.doczj.com/doc/221961104.html,/2001/XMLSchema\"

" +

49. "xmlns:soap=\"https://www.doczj.com/doc/221961104.html,/soap/e

nvelope/\">" +

50. "" +

51. "<" + this.method + " xmlns=\"" + ns + "\">" +

52. paraXML +

53. " + this.method + ">";

54.

55. this.options.method = 'post';

56. this.options.data = null;

57.

58. var soapaction = ((https://www.doczj.com/doc/221961104.html,stIndexOf("/") != ns.length - 1

) ? ns + "/" : ns) + this.method;

59.

60. var soapAjax = new Ajax(this.url,this.options);

61. soapAjax.setHeader("SOAPAction", soapaction);

62. soapAjax.setHeader("Content-type", "text/xml; charset=u

tf-8");

63. soapAjax.request(sr);

64. },

65. getParaXML : function(wsdl)

66. {

67.

68. var objNode = null;

69. var rtnValue = "";

70. //java(xfire)

71. var ell = this.getElementsByTagName(wsdl,"xsd:element")

;

72. if(ell.length == 0)

73. {

74. //c#

75. ell = this.getElementsByTagName(wsdl,"s:element");

76. }

77. for(var i = 0; i < ell.length; i++)

78. {

79. if(this.getElementAttrValue(ell[i],"name") == this.

method)

80. {

81. objNode = ell[i];

82. break;

83. }

84. }

85.

86. if(objNode == null) return rtnValue;

87. //java(xfire)

88. ell = this.getElementsByTagName(objNode,"xsd:element");

89. if(ell.length == 0)

90. {

91. //c#

92. ell = this.getElementsByTagName(objNode,"s:element"

);

93. }

94. if(ell.length == 0) return rtnValue ;

95.

96. var hash = new Hash();

97.

98. if(this.options.data != null && this.options.data.clean

!= "")

99. {

100. hash = this.options.data.split("&").toHash("="

);

101. }

102.

103. for(var i = 0; i < ell.length; i++)

104. {

105. var paraName = this.getElementAttrValue(ell[i] ,"name");

106. rtnValue = rtnValue + this.getSingleXML(paraNa me,hash);

107. }

108.

109. return rtnValue;

110. },

111.

112. getSingleXML : function (name,hash)

113. {

114. name = name.trim();

115.

116. var rtnValue = "";

117. if(hash.hasKey(name))

118. {

119. rtnValue = hash.get(name);

120. }

121. rtnValue = "<" + name + ">" + xmlscc(rtnValue) + "

+ name + ">"

122. return rtnValue;

123. },

124. getBackData: function(xml)

125. {

126. var rtnValue = "";

127. //java(xfire)

128. var soap = this.getElementsByTagName(xml,"ns1:out"

);

129. if(soap.length == 0)

130. {

131. //c#

132. soap = this.getElementsByTagName(xml,this.meth od + "Result");

133. }

134. return soap[0].childNodes[0].nodeValue; 135.

136. },

137. getElementsByTagName : function(objNode,tagName) 138. {

139. //tagName 形式如 xsd:element ,写出tag的全称

140.

141. var ell;

142. if(this.isIE())

143. {

144. ell = objNode.getElementsByTagName(tagName);

145. }

146. else

147. {

148. if(tagName.contains(":")) tagName = tagName.sp lit(":")[1];

149. ell = objNode.getElementsByTagName(tagName);

150. }

151. return ell;

152. },

153. getElementAttrValue : function(objNode,attrName) 154. {

155. var rtnValue = "";

156.

157. if(objNode == null) return rtnValue;

158.

159. if(objNode.attributes[attrName] + "" == "undefined ")

160. {

161. if(objNode.attributes.getNamedItem(attrName) !

= null)

162. rtnValue = objNode.attributes.getNamedItem (attrName).nodeValue ;

163.

164. }

165. else

166. {

167. if(objNode.attributes[attrName] != null) 168. rtnValue = objNode.attributes[attrName].va lue;

169. }

170. return rtnValue;

171. },

172. isIE : function()

173. {

174. var isMSIE = /*@cc_on!@*/false;

175. return isMSIE;

176. }

177.});

178.

179.Array.extend({

180.

181. toHash : function (splitChar)

182. {

183. var hash = new Hash({});

184. for(var i=0;i

185. {

186.

187. if(this[i].split(splitChar).length == 1) contr nue;

188.

189. var key = this[i].split(splitChar)[0].trim();

190. var value = this[i].split(splitChar)[1].trim() ;

191.

192. hash.set(key, value);

193. }

194.

195. return hash;

196. }

197.});

198.

199.function xmlscc(strData)

200.{

201.

202. strData=strData.replace(/&/g, "&");

203. strData=strData.replace(/>/g, ">");

204. strData=strData.replace(/"<");

205. strData=strData.replace(/"/g, """);

206. strData=strData.replace(/'/g, "'");

207. return strData;

208.}

相应的调用代码如下:

js 代码

1.

?JavaScriptSOAP.rar (47.1 KB)

?描述: js调用webservice示例

?下载次数: 627

?JavaScriptSOAP(V2).rar (49.5 KB) ?描述: js,sope第二版

?下载次数: 1073

SAP开发webservice接口教程

SAP开发webservice接口教程 在client=100中进行开发: 1.创建RFC函数 SE80,在函数组下,右击->创建,创建函数模块,填写函数模块名称及描述。 2.函数属性标签页,选择“远程启用的模块”,其余默认不变。 3.函数导入标签页,需要添加调用时传入的参数(表),“传递值”需勾选。 表类型:ZSHR_EMPLOYEER_T (需要自己创建) 行类型:ZSHR_EMPLOYEER (需要自己创建)

4.函数导出标签页,需要添加调用返回的参数(表),“传递值”需勾选。 表类型:ZSHR_EMPLOYEER_OUT_T (需要自己创建) 行类型:ZSHR_EMPLOYEER_OUT (需要自己创建) 5.函数源代码标签页,需要写代码实现把传入的数据保存在透明表中。 至此,函数创建完成。 6.创建Web Services 右击包名创建企业服务,进入如下页面,选择“Service Provider”,因为我们是服务提供者,点击“继续”。

7.选择“Existing ABAP Object (Inside Out)”,点击“继续”。 8.给服务起名,并填写描述,点击“继续”

9.选择“Function Module”,点击“继续”。 10.填写我们第一步创建的函数,并勾选“Map Name”,点击“继续”。 11.SOAP Appl默认不变,Profie下拉框选择第四个选择,即不进行权限认证。点击“继续”。 12.填写对于的包和请求,点击“继续”。 下一步,直接点击“完成”。服务创建成功。

13.配置SOA 使用T-CODE:soamanager,进入web页面的SOA管理(client=100)。 14.点击“简化Web服务配置”,进入如下设置页面,点击“执行”,从列表中找到自己创建的 服务,勾选第一个checkbox,User Name/Password(basic),点击列表左上角的“保存”,之后页面右上角的“返回”按钮,返回首页。 这一步设置,代表我们只设置用户名/密码的调用认证方式。

Pb调用Webservice

Pb调用Webservice 分类:PowerBuilder 2011-05-17 15:48 1436人阅读评论(0) 收藏举报webserviceprotocolsdocumentationsoapservicewizard 而现在WebService非常火,如果将两者结合起来呢,比如:用Net写好的WebService被Pb调用,而且还可以发布成接口形式,被其他公司所调用,合乐而不为呢? 先说一下开发环境:32位Win7旗舰版+PB11.5 其实在PB10.0出来时候,就已经支持调用WebService方式了。如下面步骤即可实现调用。 l 步骤1 在Net中创建一个WebService方法,用于被Pb调用,如图-1所示 图-1

l 步骤2 将此WebService发布,最好发布成IIS方式,如图-2所示。 图-2 这里有一点说明下,发布成IIS以后,是可以直接在浏览器里打开的,但它的后缀是asmx,而PB需要的是wsdl方式,就是说如何生成Wsdl文件?如下图-3所示,另存为即可并将这个文件存储起来。 图-3 好了,准备工作基本完成 l 步骤3 创建PB的解决方案文件,如图-4所示 图-4 这里面要必须引用一个pbwsclient11.pbd文件,不然,会调用不成功。这个文件在安装路径里就可以找到。 l 步骤4

从此步开始,我们按照创建对象创建一步一步操作即可,如下图列表所示 如图-5所示,选择Web Service Proxy Wizard图标

如图-6,这个选项勾不勾没有关系 如图-7,这个就要输入我们生成好的WSDL文件路径了(绝对路径) 如图-8所示,如果能到这里,就基本没有问题了

Webservice接口开发

Webservice接口开发 Author:Geloin

目录 1 准备工作 (1) 2 服务器端 (1) 2.1 主程序 (1) 2.2 services.xml (2) 2.3 传值方式 (3) 2.4 打包 (4) 2.5 发布 (6) 3 客户端 (8) 3.1 导入包 (8) 3.2 示例代码 (8) 3.3 代码解析 (10) 3.3.1 设定服务器地址 (10) 3.3.2 设定action (10) 3.3.3 设定要调用的方法名 (11) 3.3.4 设定客户端控件 (11) 3.3.5 设定命名空间 (11) 3.3.6 设定需要传送的值 (11) 3.3.7 设定返回数据类型 (11) 3.3.8 获取返回结果 (12)

1准备工作 至https://www.doczj.com/doc/221961104.html,/axis2/下载axis2的bin及war包,分别解压之,在环境变量中添加AXIS2_HOM,将axis2.war放置到tomcat/webapps目录下,启动tomcat,用浏览器打开http://localhost:8080/axis2,如下图所示: 2服务器端 2.1主程序 服务器端可以是任何一个程序,例如下面的例子: public class Test { // 此程序返回一个字符串 public String test1(String arg) { return arg + “测试”; } // 此程序返回一个一维数组 public String[] test2(String arg) { String[] result = new String[]{arg}; return result;

Javascript鼠标触发事件大全

Javascript鼠标事件大全 一般事件 事件浏览器支持描述 onClick IE3|N2|O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDblClick IE4|N4|O 鼠标双击事件onMouseDown IE4|N4|O 鼠标上的按钮被按下了onMouseUp IE4|N4|O 鼠标按下后,松开时激发的事件 onMouseOver IE3|N2|O3 当鼠标移动到某对象范围的上方时触发的事件 onMouseMove IE4|N4|O 鼠标移动时触发的事件 onMouseOut IE4|N3|O3 当鼠标离开某对象范围时触发的事件 onKeyPress IE4|N4|O 当键盘上的某个键被按下并且释放时触发的事件.[注意:页面内必须有被聚焦的对象] onKeyDown IE4|N4|O 当键盘上某个按键被按下时触发的事件[注意:页面内必须有被聚焦的对象] onKeyUp IE4|N4|O 当键盘上某个按键被按放开时触发的事件[注意:页面内必须有被聚焦的对象] 页面相关事件 事件浏览器支持描述 onAbort IE4|N3|O 图片在下载时被用户中断 onBeforeUnload IE4|N|O 当前页面的内容将要被改变时触发的事件 onError IE4|N3|O 捕抓当前页面因为某种原因而出现的错误,如脚本错误与外部数据引用的错误 onLoad IE3|N2|O3 页面内空完成传送到浏览器时触发的事件,包括外部文件引入完成 onMove IE|N4|O 浏览器的窗口被移动时触发的事件onResize IE4|N4|O 当浏览器的窗口大小被改变时触发

【WebService】接口的测试方法

【WebService】接口的测试方法 有以下多种方式: 一、通过WSCaller.jar工具进行测试: 前提:知道wsdl的url。 wsCaller可执行程序的发布方式为一个wsCaller.jar包,不包含Java运行环境。你可以把wsCaller.jar复制到任何安装了Java运行环境(要求安装JRE/JDK 1.3.1或更高版本)的计算机中,用以下命令运行wsCaller: java -jar wsCaller.jar 使用wsCaller软件的方法非常简单,下面是wsCaller的主界面: 首先在WSDL Location输入框中输入你想调用或想测试的Web Service的WSDL位置,如“https://www.doczj.com/doc/221961104.html,/axis/services/StockQuoteService?wsdl”,然后点“Find”按钮。wsCaller就会检查你输入的URL地址,并获取Web Service的WSDL信息。如果信息获取成功,wsCaller会在Service和Operation下拉列表框中列出该位置提供的Web Service服务和服务中的所有可调用的方法。你可以在列表框中选择你要调用或测试的方法名称,选定后,wsCaller窗口中间的参数列表框就会列出该方法的所有参数,包括每个参数的名

称、类型和参数值的输入框(只对[IN]或[IN, OUT]型的参数提供输入框)。你可以输入每个参数的取值。如下图: 这时,如果你想调用该方法并查看其结果的话,只要点下面的“Invoke”按钮就可以了。如果你想测试该方法的执行时间,则可以在“Invoke Times”框中指定重复调用的次数,然后再按“Invoke”按钮。wsCaller会自动调用你指定的方法,如果调用成功,wsCaller会显示结果对话框,其中包括调用该方法所花的总时间,每次调用的平均时间和该方法的返回值(包括返回值和所有输出型的参数)。如下图:

java调用WebService(客户端)

java调用WebService(客户端) 看下了网上大部分都是写java来编写WS服务端,小编这边就小写了下JAVA的调用端。WebService可以有Get、Post、Soap、Document四种方式调用,以下是四种方式的参照说明。 对于SOAP协议多写了个CXF的调用(对于CXF必须有以下包:) 以下是调用代码 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import https://www.doczj.com/doc/221961104.html,.URL; import https://www.doczj.com/doc/221961104.html,.URLConnection; import https://www.doczj.com/doc/221961104.html,.URLEncoder; import org.apache.cxf.endpoint.Client; import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; /** * 功能描述:WebService调用 * */ public class ClientTest {

/** * 功能描述:HTTP-GET * */ public String get() { URL url; BufferedReader bin = null; StringBuilder result = new StringBuilder(); try { String urlTemp = "https://www.doczj.com/doc/221961104.html,//WebServices/WeatherWebService.asmx/getSupportCity?byProvin ceName=" + URLEncoder.encode("福建", "UTF-8");// URLEncoder用来参数编码url = new URL(urlTemp); InputStream in = url.openStream(); // 请求 bin = new BufferedReader(new InputStreamReader(in, "UTF-8")); String s = null; while ((s = bin.readLine()) != null) { result.append(s); } } catch (Exception e) { e.printStackTrace(); } finally { if (null != bin) { try { bin.close(); } catch (IOException e) { e.printStackTrace(); } } } return result.toString(); } /** * 功能描述:HTTP-POST * */ public String post() { OutputStreamWriter out = null; StringBuilder sTotalString = new StringBuilder(); try { URL urlTemp = new URL(

javascript键盘事件

主要分四个部分 第一部分:浏览器的按键事件 第二部分:兼容浏览器 第三部分:代码实现和优化 第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件类型,即keydown,keypress和keyup,它们分别对应onkeydown、onkeypress和onkeyup这三个事件句柄。一个典型的按键会产生所有这三种事件,依次是keydown,keypress,然后是按键释放时候的keyup。 在这3种事件类型中,keydown和keyup比较底层,而keypress比较高级。这里所谓的高级是指,当用户按下shift + 1时,keypress是对这个按键事件进行解析后返回一个可打印的“!”字符,而keydown和keyup只是记录了shift + 1这个事件。[1] 但是keypress只能针对一些可以打印出来的字符有效,而对于功能按键,如F1-F12、Backspace、Enter、Escape、PageUP、PageDown和箭头方向等,就不会产生keypress事件,但是可以产生keydown和keyup事件。然而在FireFox中,功能按键是可以产生keypress 事件的。 传递给keydown、keypress和keyup事件句柄的事件对象有一些通用的属性。如果Alt、Ctrl 或Shift和一个按键一起按下,这通过事件的altKey、ctrlKey和shiftKey属性表示,这些属性在FireFox和IE中是通用的。 第二部分:兼容浏览器 凡是涉及浏览器的js,就都要考虑浏览器兼容的问题。 目前常用的浏览器主要有基于IE和基于Mozilla两大类。Maxthon是基于IE内核的,而FireFox和Opera是基于Mozilla内核的。 2.1 事件的初始化 首先需要了解的是如何初始化该事件,基本语句如下: function keyDown(){} document.onkeydown = keyDown; 当浏览器读到这个语句时,无论按下键盘上的哪个键,都将呼叫KeyDown()函数。 2.2 FireFox和Opera的实现方法 FireFox和Opera等程序实现要比IE麻烦,所以这里先描述一下。 keyDown()函数有一个隐藏的变量--一般的,我们使用字母“e”来表示这个变量。 function keyDown(e) 变量e表示发生击键事件,寻找是哪个键被按下,要使用which这个属性: e.which

C#调用WebService实例和开发

C#调用WebService实例和开发 一、基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。简单的理解就是:webservice就是放在服务器上的函数,所有人都可以调用,然后返回信息。比如google就有一个web service,你调用它就可以很容易的做一个搜索网站。就像调用函数一样,传入若干参数(比如关键字、字符编码等),然后就能返回google检索的内容(返回一个字符串)。其中, Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。 WSDL:(Web Services Description Language)WSDL文件是一个XML文档,用于说明一组SOAP消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。 UDDI(Universal Description,Discovery,and Integration)是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP 消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。 二、优点缺点 Web Service的主要目标是跨平台的可互操作性。为了实现这一目标,Web Service完全基于XML(可扩展标记语言)、XSD(XML Schema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。因此使用Web Service有许多优点: 1、跨防火墙的通信 如果应用程序有成千上万的用户,而且分布在世界各地,那么客户端和服务器之间的通信将是一个棘手的问题。因为客户端和服务器之间通常会有防火墙或者代理服务器。传统的做法是,选择用浏览器作为客户端,写下一大堆ASP页面,把应用程序的中间层暴露给最终用户。这样做的结果是开发难度大,程序很难维护。要是客户端代码不再如此依赖于HTML表单,客户端的编程就简单多了。如果中间层组件换成Web Service的话,就可以从用户界面直接调用中间层组件,

JavaScript中按键事件的e.keyCode e.which e.charCode

JavaScript中按键事件的e.keyCodee.whiche.charCode 1、浏览器的按键事件 浏览器有3种按键事件——keydown,keypress和keyup,分别对应onkeydown、onkeypress和onkeyup3个事件句柄。 一个典型的按键会产生所有这三种事件,依次是keydown-->keypress-->keyup。[html]view plaincopyprint? 1. 2. 控制台输出: keydown keypress keyup 2、浏览器的兼容性

(1)FireFox、Opera、Chrome 事件对应的函数有一个隐藏的变量e,表示发生事件。 e有一个属性e.which指示哪个键被按下,给出该键的索引值(按键码)。 静态函数String.fromCharCode()可以把索引值(按键码)转化成该键对应的的字符。eg: [html]view plaincopyprint? 1. 2. FireFox、Opera、Chrome中输入:a 输出:按键码:97 字符:a (2)IE IE不需要e变量,window.event表示发生事件。 window.event有一个属性window.event.keyCode指示哪个键被按下,给出该键的索引值(按键码)。 静态函数String.fromCharCode()可以把索引值(按键码)转化成该键对应的的字符。eg: [html]view plaincopyprint?

NET调用WebService服务的方法详解!

本文实例讲述了https://www.doczj.com/doc/221961104.html,调用WebService服务的方法。分享给大家供大家参考,具体如下: 一、WebService:WebService是以独立于平台的方式,通过标准的Web协议,可以由程序访问的应用程序逻辑单元。 (1)应用程序逻辑单元:web服务包括一些应用程序逻辑单元或者代码。这些代码可以完成运算任务,可以完成数据库查询,可以完成计算机程序能够完成的任何工作。 (2)可由程序访问:当前大多是web站点都是通过浏览器由人工访问的,web服务可以由计算机程序来访问。 (3)标准的we协议:Web服务的所有协议都是基于一组标准的Web协议,如HTTP、XML、SOAP、WSDl、UDDI等 (4)平台独立性:web服务可以在任何平台上实现。因为标准协议不是由单个供应商专用的,它由大多数主要供应商支持。 SOAP(Simple Object Access Protocol,简单对象访问协议)协议:是用于交换XML编码信息的轻量级协议,SOAP协议是HTTP和XML协议的组合。 WSDL(Web Service Description Language,Web服务描述语言)是用XML文档来描述Web 服务的标准,是Web服务的接口定义语言。 二、创建https://www.doczj.com/doc/221961104.html, WEB服务 建立Web服务就是把一些信息或逻辑对其他计算机和客户公开,进一步说,就是从支持SOAP通信的类中建立一个或多个方法。 创建Web服务的步骤:(VS2008) 首先,新建一个网站。选择文件-------->新建--------->网站,打开“新建网站”对话框,选择“https://www.doczj.com/doc/221961104.html, web服务”模板。确定后,创建成功。 创建好后,会生成Service.asmx,其代码隐藏文件Servece.cs位于App_Code文件中。Web服务文件都使用扩展名.asmx。 发现在VS2010中,创建web服务是先新建一个网站,在选择添加新项,然后选择web 服务。 三、使用https://www.doczj.com/doc/221961104.html, Web服务 (1)添加Web引用 1、新建网站,右键单击网站根目录,选择“添加Web引用”项。 2、在“添加Web引用”对话框中,在URl列表框中选择或者填入Web服务的URL。(.asmx 文件路径)然后在“添加Web引用”文本框中填入希望在应用程序中使用的添加Web引用名。

JavaScript事件

我的记录(JavaScript事件)JavaScript 事件冒泡简介及应用实例 一、什么是事件冒泡 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。 打个比方说:你在地方法院要上诉一件案子,如果地方没有处理此类案件的法院,地方相关部门会帮你继续往上级法院上诉,比如从市级到省级,直至到中央法院,最终使你的案件得以处理。 二、事件冒泡有什么作用 (1)事件冒泡允许多个操作被集中处理(把事件处理器添加到一个父级元素上,避免把事件处理器添加到多个子级元素上),它还可以让你在对象层的不同级别捕获事件。 【集中处理例子】