博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebService开发常见问题
阅读量:6157 次
发布时间:2019-06-21

本文共 1296 字,大约阅读时间需要 4 分钟。

任何问题都需要从它的根源说起,所以简单说一下WebService的工作原理。客户端调用一个WebService的方法,首先需要将方法名和需要传递的参数包装成XML(也就是SOAP包),通常是通过HTTP传递到端,然后端解析这段XML,得到被调用方法名称和传递来的参数,进而调用WebService实例的相应方法。方法执行完成之后,将返回的结果再包装成XML(SOAP响应)发送到客户端,客户端解析这段XML,进而得到返回结果。这里关键的地方在于中间加入了对象和XML相互转换的过程。

问题一:WebService与方法重载

  首先说明,WebService不支持方法重载。下面举例说明。

  例如定义如下WebService接口:

1 @WebService2 public interface IHello {3         @WebMethod4         public String sayHello(int id);5 6         @WebMethod7         public String sayHello(String name);8         9         @WebMethod10         public String sayHello2(int id);11 12         @WebMethod13         public String sayHello2(int id, String name);14     }

先来看方法sayHello(),如果客户端发送如下SOAP请求:

1 
2
3
4
11
5
6
7

  从SOAP请求我们可以看出客户端需要调用方法为sayHello(),所传递的参数为11,但是无法知道是整数的11,还是字符串"11",所以也就无法确定所调用的方法是哪一个。

  接下来看一下sayHello2(),如果客户端传递的参数只包括一个id值,例如:

1 
2
3
4
1
5
6
7

 还是无法判断调用的是哪个方法,因为可以理解为客户端传递的第二个参数为空(Null)。

  通常情况下,在发布一个含有重载方法的WebService时会有异常发生,或者当调用一个方法时,服务器端报告找不到相对应的方法。

 

转载于:https://www.cnblogs.com/zengsong-restService/archive/2013/01/04/2843717.html

你可能感兴趣的文章
jquery用法大全
查看>>
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
linux后台运行程序
查看>>