现象:
采用C# webservice studio工具调试axis2生成的java webservice服务,如果java端的接口中的参数类型为int,则通过该工具调试会报错,调用不了java端方法。
解决方法:
1.VS2005封装WebService引用时,如果WebService发布的是一个基本数据类型组成的对象,则会对该对象的非string属性同时生成两个属性,一般是这样的"属性××"、"属性××Specified"。而"属性名Specified"是一个bool类型,只有这个属性被设置成true时,"属性××"的值才会被序列化成xml传递。
同样的道理,用.NET提供WebService给JAVA调用时,如果是一个基本数据类型组成的对象,则会对该对象的非string属性同时生成两个属性,一般是这样的"属性××"、"属性××Specified"。如果不将“属性××Specified”设置为true的话,服务端得到的数据将是null。解决办法就是把“属性××Specified”设置为true或者把“属性××Specified”删掉。
2.将int类型参数改为string类型。
参考资料:
http://msdn.microsoft.com/zh-cn/library/system.xml.xmlattribute.specified(VS.80).aspx
.NET Framework 类库
XmlAttribute.Specified 属性
获取一个值,该值指示是否显式设置了属性值。
命名空间:System.Xml
程序集:System.Xml(在 system.xml.dll 中)
属性值
如果在原始实例文档中显式地为该属性给定一个值,则为 true;否则为 false。false 值指示该属性的值来自 DTD。
备注
该属性是由实现负责的,而不是用户。如果用户更改该属性的值(即使它最后与默认/固定值具有相同的值),Specified 标志就会自动转为 true。若要重新将该属性指定为 DTD 中的默认/固定值,则用户必须删除该属性。然后,实现提供一个新属性,其 Specified 设置为 false,并具有默认/固定值(如果存在的话)。
摘要:
如果属性具有文档中的分配值,则 Specified 为 true,并且该值是分配值。
如果属性没有文档中的分配值,而具有 DTD 中的默认/固定值,则 Specified 为 false,该值是 DTD 中的默认/固定值。
否则,该属性不出现在文档的结构模型中。
分享到:
相关推荐
调用Java WebService的问题在IT领域中颇为常见,尤其是在跨平台、跨语言的环境中,如C#调用Java WebService。以下将详细解析这一过程中的关键知识点,包括WebService的架构原理、工具选择(如Axis2)、数据类型转换...
下面主要介绍使用 Axis2 开发一个不需要任何配置文件的 WebService,并在客户端使用 Java 和 C# 调用这个 WebService。 Axis2 下载和安装 Axis2 的下载和安装可以从 Apache 官方网站下载最新版本的 Axis2,下载...
本文将详细介绍如何使用Axis2框架来开发一个无需任何配置文件的WebService,并演示如何使用Java和C#客户端进行调用。 #### 二、Axis2概述与安装 ##### Axis2简介 Axis2是Apache组织提供的一款开源WebService框架,...
Java程序调用.NET/C#的Web服务是一种跨平台的交互方式,主要依赖于SOAP(Simple Object Access Protocol)协议,使得不同编程语言开发的应用程序能够相互通信。在本场景中,用户已经提供了一个.NET的Web服务,而我们...
#### 五、使用C#调用WebService - **原理概述**:与Java类似,C#也可以通过解析WSDL文档生成代理类的方式调用WebService。 - **示例步骤**: 1. 使用Visual Studio中的“添加Web引用”功能导入WebService的WSDL。 ...
调用Axis2发布的WebService可以采用多种编程语言,包括Java和C#。使用Java时,可以直接调用或通过`wsdl2java`工具自动生成客户端代码,简化开发过程。而在C#中,通常使用Visual Studio的“添加Web引用”功能来生成...
- **使用C#调用WebService:** - 创建一个新的C#项目。 - 添加对Axis2服务的引用。 - 调用相应的Web服务方法。 #### 四、使用wsdl2java简化客户端的编写 - **生成客户端代码:** - 使用Axis2自带的工具 `wsdl2...
客户端调用WebService可以通过多种编程语言实现,常见的有Java和C#。使用Java时,可以直接通过HTTP URL调用或使用`javax.xml.rpc.Service`类结合WSDL文件创建代理类进行调用。对于C#,则可通过.NET Framework提供的`...
通过 Axis2,开发者可以直接使用 Java 类型作为 WebService 方法的参数和返回值,简化了开发过程。同时,还介绍了如何利用序列化和反序列化技术处理对象实例的传输,使得复杂数据结构能够在 WebService 中得以传递。...
本教程通过实例介绍如何在无需任何配置文件的情况下,利用Java POJO(Plain Old Java Object)快速创建和发布Web服务,并展示如何在客户端使用Java和C#进行调用。 首先,要开始学习 Axis2,你需要从官方网站...
本教程将逐步指导你如何利用Axis2在Eclipse环境中创建、部署和调用一个无需任何配置文件的Web服务,并展示如何在Java和C#客户端中使用这些服务。 首先,了解Axis2的基本特性: 1. **支持多种协议**:Axis2不仅支持...
本文仅涉及如何使用Axis2发布WebService,但在实际应用中还需要考虑如何从客户端调用这些服务。客户端可以使用Java或C#等语言通过SOAP或RESTful API来调用发布的服务。具体的调用方式取决于服务端的接口定义和...
在Axis2中,可以直接使用Java的数组或自定义类(接口)作为WebService方法的参数或返回值。对于数组,注意只能声明一维数组,但可以通过分隔符来表示多维数组,例如上面的代码示例就是一个模拟的3x3二维字符串数组。...