今天在使用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"}};
重新调用测试,发现调用成功
分享到:
相关推荐
### Java WebService 简单实例 方式二(axis1直接调用方式) #### 背景介绍 在软件开发领域,特别是在企业级应用中,Web服务作为一种标准的技术规范被广泛采用,它允许不同系统间进行通信与数据交换。Java Web ...
Axis 提供了 wsdl2java 工具,可以自动生成服务端和客户端的 Java 代码,包括处理复杂类型数组的类和方法。此外,IDEs 如 Eclipse 或 IntelliJ IDEA 也提供了对 Axis 的集成支持,简化了 Web 服务开发和调试过程。 ...
在IT领域,特别是Java开发中,调用WebService是一种常见的需求,尤其当系统间需要进行通信或数据交换时。本文将详细解析如何通过Apache Axis库在Java应用中调用WebService,具体聚焦于“JAVA调用webservice(axis...
【Axis发布调用服务】是关于使用Apache Axis框架创建和部署Web服务的教程,适合初学者。Apache Axis是一个开源的Java库,遵循SOAP规范,使Java应用服务器具备提供Web服务的能力。 **一、Web服务简介** Web服务是一...
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- Axis2 config start --> <servlet-name>AxisServlet <servlet-class>org.apache.axis2....
3. **客户端调用**:可以使用Axis2客户端或者任何SOAP客户端工具来调用服务。例如,创建一个SOAP请求并发送到服务地址。 四、 Axis2特性与优势 - **模块化**:Axis2的模块化设计使得服务可以根据需要加载特定功能,...
这个简单的例子展示了AXIS2的基本工作流程,包括服务定义、服务实现、服务部署和客户端调用。随着对AXIS2理解的深入,你还可以探索更多高级特性,如MTOM、SwA优化、安全性和事务处理等。对于初学者来说,掌握这些...
以下是一个简单的Axis客户端调用Web服务的代码示例: ```java import org.apache.axis.client.Service; public class WebServiceClient { public static void main(String[] args) { try { // 创建Service实例...
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); } ...
本教程将讲解如何使用Spring Boot集成Apache CXF(一个强大的Java Web Service框架)来构建服务端,并探讨两种Java客户端调用Web Service接口的方法。 首先,我们需要理解Spring Boot与CXF的整合。Spring Boot通过...
对于涉及复杂数据类型的WebService开发,Axis2支持通过XSD定义来映射Java类与XML结构之间的转换。 **3.2 辅助工具发布、调用WebService** Axis2提供了多种工具帮助开发者更高效地进行开发工作,例如: - `wsdl2...
### 使用Axis调用在线天气预报服务的实现方法 #### 一、概述 本文将详细介绍如何在Java环境中利用Apache Axis框架来调用一个在线天气预报服务。这个示例演示了如何在MyEclipse环境下配置和使用Axis 2进行网络服务...
Java调用以WSDL(Web Service Description Language)形式发布的Web服务是Java开发中常见的任务,尤其是在集成不同系统或服务时。WSDL文件是一种XML格式,它定义了Web服务的接口,包括服务的位置、提供的操作以及...
这些参数指定了调用Web服务时需要传递的数据及其类型。 ##### 7. 设置返回类型 ```java call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); ``` 此设置定义了预期的返回值类型。 ##### 8. 设置...
- `ns:ArrayOfstring` 映射到 `java.lang.String[]` 类型。 - `ns:Bean` 映射到 `webservice.wxm.Bean` 类型。 - 指定了序列化和反序列化的类名,以及编码风格。 #### 四、总结 本文详细介绍了如何在Axis框架下...
Java调用.NET WebService是跨平台通信的一种常见方式,尤其在企业级应用中,不同技术栈的应用需要相互交互数据时,这种技术尤为实用。Apache Axis是Java中常用的用于调用Web服务的工具,它提供了方便的API来创建和...
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); // 准备参数 String sendTime = "2011-07-1413:05:32"; Object[] params = new Object[]{"xxx", "13223333333", "Զ", sendTime}; // 执行调用...
总的来说,使用Axis调用WebService接口在Java中是一种高效且灵活的方法。通过上述步骤,你可以轻松地与任何支持SOAP的WebService进行通信。在实践中,根据具体需求和项目规模,可能还需要考虑更多的细节和优化措施。
array('return' => 'xsd:string'), 'urn:hellowsdl', 'urn:hellowsdl#hello', 'rpc', 'encoded', 'Says hello to the caller' ); ``` 这里注册了一个名为`hello`的服务方法,输入参数为字符串类型,输出也为字符串...
- **分析**:上述代码展示了如何使用Axis库创建一个Web Service客户端并调用服务端的方法。其中`setTargetEndpointAddress`用于设置服务端的URL地址;`setOperationName`用于指定调用的服务方法名称;`addParameter`...