webservice 客户端调用 实践发现的问题
刚学习webservice,看到网上有进行webservice客户端调用的文章,方法很简单,很好用,就转载下来
在项目里试了试,发现有问题。
先描述一下我的服务端的webservice。主要是一个参数和返回值都是JSONObject类型的方法。举例 :
[java]
public class Test {
public JSONObject test(JSONObject o) {
......
}
}
我先在服务器端将这个类发布,调用http://.......?wsdl可以看到,发布成功了。
然后我再客户端,用spring托管的方式来调用这个webservice,没有问题,可以拿到正常的返回值。
之后写了一个main方法,在客户端分别有上篇日志转载的方法来调用这个webservice,发现都有问题。
对于第二种方法,直接提示无法createObject www.zzzyk.com
对于第一种,我之前大意了,对于url后面也加了?wsdl,结果就中出错,提示不存在element的错误。
上网查以才知道,用这种方法url后面是不能加?wsdl的~汗~
我去了?wsdl,更神奇的现象出现了:我查看日志,传给服务器的参数是JSONObject,服务器接收到的也是这个类型,处理正常执行,返回的也是这个类型,但是客户端接受的到就被截去了json后面的部分,只显示{“key1”:value2},"key2",value2...都没有了。很崩溃啊
仔细想了想,估计是类型的问题。我把服务器端的webservice参数和返回值类型都改成了String,再次测试,两种方法都没问题了。
webservice是跨语言的,String对于各种语言的支持都是蛮高的,我想,如果没什么特殊需要,还是都用string作为参数和返回值比较好
当然,对于复杂的,必须用对象进行传输的,还需要仔细研究一下,毕竟,传输简单对象也是webservice的一大优点。
补充:Web开发 , 其他 ,