`
hu437
  • 浏览: 194531 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

axis2客户端调用时ArrayOf_xsd_string类型的处理

阅读更多

今天在使用axis2调用一个Axis1的webservice时出现了一个如下类型的数据

 

 

<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="xxxxxxx">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="ArrayOf_xsd_string">
<complexContent>
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
</restriction>
</complexContent>
</complexType>
</schema>
</wsdl:types>

 

 这个类型的数据在,服务端也就是一个string数组,在客户端写的调用代码自然而然的想到也是映射成一个string数组,调用时出现:

Found character data inside an array element while deserializing

 

在网上搜索了半天,无果,也没有找到解决办法。关键时刻还是要靠自己。

 

在使用eclipse里面的web Service Explorer调用时看到请求的SOAP信息如下:

 

 

 <phone q0:arrayType="xsd:string[1]" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="q0:Array">
  <string xsi:type="xsd:string">1592523xxxx</string> 
  </phone>

 

在使用HttpAnalyzer监控java代码的调时发现传递的这样的信息:

  <item0 xmlns="">1592823xxxx</item0> 
  <item0 xmlns="">1338333xxxx</item0> 

 

感觉这个不像是数组,所以我就将java代码中,原先的一维数组变成二维数组试一下

String[] phones = {"1592823xxxx","1338333xxxx"};

 

String[][] phones = {{"15925232137","1837393xxxx"}};

 重新调用测试,发现调用成功

 

 

 

0
2
分享到:
评论
2 楼 xhbgq 2016-03-10  
谢谢分享,虽然没明白为啥要二维数组才能解决,可能还有好的办法,比如通过设置。
但是解决了我碰到的问题。
1 楼 cs6641468 2013-01-29  
请问客户端代码如何调用的?
我定义了一个getArray的方法,返回一个Strings数组,客户端如下调用:
String[] strs = (String[]) serviceClient.invokeBlocking(getArrayMethod, new Object[]{},new Class[]{String[].class})[0];

可以结果得到的strs的length=1(即数组只有一个值),而这个值是几个换行符(\n),并不是getArray应该返回的内容

相关推荐

    Java WebService 简单实例 方式二(axis1直接调用方式)

    ### Java WebService 简单实例 方式二(axis1直接调用方式) #### 背景介绍 在软件开发领域,特别是在企业级应用中,Web服务作为一种标准的技术规范被广泛采用,它允许不同系统间进行通信与数据交换。Java Web ...

    在axis1.4中传递复杂类型数组参数(ArrayMapping)

    Axis 提供了 wsdl2java 工具,可以自动生成服务端和客户端的 Java 代码,包括处理复杂类型数组的类和方法。此外,IDEs 如 Eclipse 或 IntelliJ IDEA 也提供了对 Axis 的集成支持,简化了 Web 服务开发和调试过程。 ...

    JAVA调JAVA调用webservice(axis方式).doc 用webservice(axis方式).doc

    在IT领域,特别是Java开发中,调用WebService是一种常见的需求,尤其当系统间需要进行通信或数据交换时。本文将详细解析如何通过Apache Axis库在Java应用中调用WebService,具体聚焦于“JAVA调用webservice(axis...

    Axis发布调用服务

    【Axis发布调用服务】是关于使用Apache Axis框架创建和部署Web服务的教程,适合初学者。Apache Axis是一个开源的Java库,遵循SOAP规范,使Java应用服务器具备提供Web服务的能力。 **一、Web服务简介** Web服务是一...

    Axis2发布以及调用webservice具体实例

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&gt; &lt;!-- Axis2 config start --&gt; &lt;servlet-name&gt;AxisServlet &lt;servlet-class&gt;org.apache.axis2....

    Axis2 Webservice端例子

    3. **客户端调用**:可以使用Axis2客户端或者任何SOAP客户端工具来调用服务。例如,创建一个SOAP请求并发送到服务地址。 四、 Axis2特性与优势 - **模块化**:Axis2的模块化设计使得服务可以根据需要加载特定功能,...

    AXIS2简单例子

    这个简单的例子展示了AXIS2的基本工作流程,包括服务定义、服务实现、服务部署和客户端调用。随着对AXIS2理解的深入,你还可以探索更多高级特性,如MTOM、SwA优化、安全性和事务处理等。对于初学者来说,掌握这些...

    webservice调用,传参代码样例

    以下是一个简单的Axis客户端调用Web服务的代码示例: ```java import org.apache.axis.client.Service; public class WebServiceClient { public static void main(String[] args) { try { // 创建Service实例...

    Java调用WSDL

    call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); String temp = "测试人员"; String result = (String) call.invoke(new Object[]{temp}); System.out.println("result is " + result); } ...

    springboot+webservice搭建webservice服务端及使用java客户端两种方式进行调用webservice接口

    本教程将讲解如何使用Spring Boot集成Apache CXF(一个强大的Java Web Service框架)来构建服务端,并探讨两种Java客户端调用Web Service接口的方法。 首先,我们需要理解Spring Boot与CXF的整合。Spring Boot通过...

    Axis2 WebService 开发指南

    对于涉及复杂数据类型的WebService开发,Axis2支持通过XSD定义来映射Java类与XML结构之间的转换。 **3.2 辅助工具发布、调用WebService** Axis2提供了多种工具帮助开发者更高效地进行开发工作,例如: - `wsdl2...

    通过axis使用网上天气预报服务的demo

    ### 使用Axis调用在线天气预报服务的实现方法 #### 一、概述 本文将详细介绍如何在Java环境中利用Apache Axis框架来调用一个在线天气预报服务。这个示例演示了如何在MyEclipse环境下配置和使用Axis 2进行网络服务...

    教案Java调用以WSDL形式发布的webservice.pdf

    Java调用以WSDL(Web Service Description Language)形式发布的Web服务是Java开发中常见的任务,尤其是在集成不同系统或服务时。WSDL文件是一种XML格式,它定义了Web服务的接口,包括服务的位置、提供的操作以及...

    java调用Webserveice代码

    这些参数指定了调用Web服务时需要传递的数据及其类型。 ##### 7. 设置返回类型 ```java call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); ``` 此设置定义了预期的返回值类型。 ##### 8. 设置...

    axis自定义数组对象

    - `ns:ArrayOfstring` 映射到 `java.lang.String[]` 类型。 - `ns:Bean` 映射到 `webservice.wxm.Bean` 类型。 - 指定了序列化和反序列化的类名,以及编码风格。 #### 四、总结 本文详细介绍了如何在Axis框架下...

    java调用.net webservice实例

    Java调用.NET WebService是跨平台通信的一种常见方式,尤其在企业级应用中,不同技术栈的应用需要相互交互数据时,这种技术尤为实用。Apache Axis是Java中常用的用于调用Web服务的工具,它提供了方便的API来创建和...

    Java调用asmx(WebService)

    call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); // 准备参数 String sendTime = "2011-07-1413:05:32"; Object[] params = new Object[]{"xxx", "13223333333", "Զ", sendTime}; // 执行调用...

    java调用webservice接口.zip

    总的来说,使用Axis调用WebService接口在Java中是一种高效且灵活的方法。通过上述步骤,你可以轻松地与任何支持SOAP的WebService进行通信。在实践中,根据具体需求和项目规模,可能还需要考虑更多的细节和优化措施。

    Java调用php的webservice

    array('return' =&gt; 'xsd:string'), 'urn:hellowsdl', 'urn:hellowsdl#hello', 'rpc', 'encoded', 'Says hello to the caller' ); ``` 这里注册了一个名为`hello`的服务方法,输入参数为字符串类型,输出也为字符串...

    Web_Service调用方式大全.

    - **分析**:上述代码展示了如何使用Axis库创建一个Web Service客户端并调用服务端的方法。其中`setTargetEndpointAddress`用于设置服务端的URL地址;`setOperationName`用于指定调用的服务方法名称;`addParameter`...

Global site tag (gtag.js) - Google Analytics