webservice学习笔记【一】——接收远程调用webservice返回的数组
????? 最近突然想学习webservice,作为一个初学者没想着一开始开发webservice,想先练练手,使用axis2 1.4?调用webservice,虽然只是调用webservice客户端,但是遇到的麻烦还真不少。 ????? 其中折磨我最久的问题就是如何处理远程调用返回的数组了,我照着网上的讲解调用一些网上公开的webservice,返回类型为String或者为schema.xml时都没有问题,但是返回的结果为数组时就出现以下异常: - Exception: ? 我的测试代码如下: package webservice; import java.net.URL; import org.apache.axis.client.Call; import javax.xml.namespace.QName; public class Test { ?public static void main(String[] args) { ? ????? 根据前面学习的经验我知道是设置返回值类型错误,但是我在网上找了一整天的资料,很难找到关于接收字符串数组的例子,而且搜索出来的是千篇一律的例子,基本都是只返回字符串的(可能是我的搜索水平有问题吧,O(∩_∩)O~)。找到一两个关于返回字符串数组的问题都是设置返回值类型为XMLType.SOAP_ARRAY,但是这样会跑出同样的异常,我不知道是我的axis的版本问题还是什么,整的我都快崩溃了,后面没办法只能试试可能的其他类型,最后发现有一个XMLType.SOAP_VECTOR类型,运行后发现没有出现异常。于是使用Vector接收返回值:Vector result = (Vector)call.invoke(new Object[]{"昆明"});然后把的内容输出后发现可以了,问题终于解决了,虽然这个问题看起来挺简单的,但是折腾了我很久,总算是解决了,O(∩_∩)O哈哈~。我把这个问题写下来,希望能给和我一样困惑的人提供点帮助,O(∩_∩)O~。 ???? 既然已经写了一些,我想把我遇到的其他问题也写下来吧,说不定以后用得着。在刚开始的时候遇到过以下异常: AxisFault 在网上找了一些资料,最后发现自己出现的问题,我原来在设置参数的时候是如下设置的: call.addParameter("theCityName",ParameterMode.IN); 把该条语句改为: call.addParameter(new QName("http://WebXml.com.cn/",ParameterMode.IN);后问题就解决了,但是其中的原因我就不清楚了,希望哪位知道的朋友解释一下,谢谢!!! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |