zoukankan      html  css  js  c++  java
  • asp.net调用JAVA的webservice时注意

    ASP.NET调用java编写的webservice出现特定字段传输为空

    ASP.NET调用java编写的webservice出现特定字段传输为空
    我用axis2编写了一个webservice成功发布,传入参数为自定义数组,通过java客户端,能够成功调用。改用C#调用,发现自定义类中STRING类型能够成功传入到服务端,其他类型LONG及datetime不能够传入服务端。期待高手共同讨论。自定义对象能够成功传递,所以我猜测是不是java和C#的数据类型有区别的原因,如果这样应该如何处理?

    用C#.NET调用Java开发的WebService时,先在客户端封装的带有int属性的对象,当将该对象传到服务器端时,服务器端可以得到string类型的属性值,却不能得到int类型、double和DateTime类型的值(在服务端得到的均为null)

    解决办法:

    VS2005封装WebService引用时,如果WebService发布的是一个基本数据类型组成的对象,则会对该对象的非string属性同时生成两个属性,一般是这样的"属性××"、"属性××Specified"。而"属性名Specified"是一个bool类型,只有这个属性被设置成true时,"属性××"的值才会被序列化成xml传递。



    同样的道理,用.NET提供WebService给JAVA调用时,如果是一个基本数据类型组成的对象,则会对该对象的非string属性同时生成两个属性,一般是这样的"属性××"、"属性××Specified"。如果不将“属性××Specified”设置为true的话,服务端得到的数据将是null。解决办法就是把“属性××Specified”设置为true或者把“属性××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 中的默认/固定值。

    否则,该属性不出现在文档的结构模型中。 

  • 相关阅读:
    ActiveMQ学习(四)——应用程序接口
    ActiveMQ学习(三)——MQ的通讯模式
    ActiveMQ学习(二)——MQ的工作原理
    ActiveMQ学习(一)——MQ的基本概念
    java获取对象属性类型、属性名称、属性值 【转】
    Java方法的参数是按值传递的.【转】
    Jquery 操作 select
    JQuery中根据属性或属性值获得元素
    XML 标记使用的特殊字符对应内置实体
    创建DBLink语句
  • 原文地址:https://www.cnblogs.com/mr-lee1976/p/4648874.html
Copyright © 2011-2022 走看看