首页 新闻 会员 周边 捐助

webservice参数定义

0
悬赏园豆:60 [已解决问题] 解决于 2014-06-11 16:10

各位,有个问题想问下,我现在在搞一个webservice接口,现在有个问题,因为方法的参数不固定,终端在调用的时候会因为参数的个数增加并且没有对新增的参数做赋值操作而报错,有什么办法能让webservice的方法提供的参数客户端可以默认不做赋值操作?除了方法重写,每次更新个方法都要做个重写方法实在太麻烦了。

就叫我好人吧的主页 就叫我好人吧 | 初学一级 | 园豆:5
提问于:2014-04-16 22:45
< >
分享
最佳答案
0

WS定义:

public string HelloWorld( string jsonpara) {
  JsonObject jo=new JsonObject(jsonpara);

  //解析JsonObject 

}

收获园豆:60
蓝色之猫 | 菜鸟二级 |园豆:283 | 2014-04-21 16:41

经验性的写法就是这种?

public string HelloWorld( string jsonpara) {
  JsonObject jo=new JsonObject(jsonpara);

  //解析JsonObject 

}

如果是这样的话,后边的接口我就也只能按这种写法来了,之前写的接口就没法动了。非常感谢。

就叫我好人吧 | 园豆:5 (初学一级) | 2014-04-22 13:10
其他回答(3)
0

把新增参数设置允许为 null。

Launcher | 园豆:45050 (高人七级) | 2014-04-17 09:03
0

如果是.net可以看一下关于【可选参数】这部分的内容,貌似是在4.0下新增的。

张小三、 | 园豆:238 (菜鸟二级) | 2014-04-17 09:39

webservice的client无法 以可选参数的方式提交,客户端在调用的时候少了一个参数就报错了,请问这种情况如何解决呢?我已经把那几个新增参数设置了默认值,按照4.0可变参数的语法,有了默认值就是可变参数了吧?

支持(0) 反对(0) 就叫我好人吧 | 园豆:5 (初学一级) | 2014-04-17 14:20

@就叫我好人吧: 刚才测试了一下,引用WS服务后的确无法以可选参数的方式提交。现在提供的解决方案是:将参数的类型改成object[]类型或者根据你业务的需要的其它类型,这样就可以解决参数个数增加的问题。

支持(0) 反对(0) 张小三、 | 园豆:238 (菜鸟二级) | 2014-04-17 14:36

@就叫我好人吧:给你个小例子。

WS定义: 

public string HelloWorld( params object[] p) {
string sb = string.Empty;
foreach (object item in p) {
sb += item.ToString()+",";
}
return sb;
}

 

调用:client.HelloWorld(new  ServiceReference1.ArrayOfAnyType(){1,2,"234234"});

支持(0) 反对(0) 张小三、 | 园豆:238 (菜鸟二级) | 2014-04-17 14:47

@xiaoyu5062: 非常感谢,我本来也想改成这种方式的可变参数,可我这边的接口之前已经发布了一个版本了所有参数类型之前定义好为string int 类型的,要是我把参数改成这种方式,估计ios那边会把整个程序都的改动一边,太费事了。。。

支持(0) 反对(0) 就叫我好人吧 | 园豆:5 (初学一级) | 2014-04-17 14:50
0

你把多出来的参数进行拼接哈,传到客户端再进行拆分不就行了,虽然这样很不优雅

幕三少 | 园豆:1384 (小虾三级) | 2014-04-19 18:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册