zoukankan      html  css  js  c++  java
  • 让Dotnet识别Java发送来的自定义SoapHeader

        在异架构间通讯时,我们一般会采用WS。我遇到的情况是WSDL已经由AXIS生成,我需要用Dotnet实现服务器。

        简单实现后,发现里面的 NotifySOAPHeader 总是取不值,添加  SoapUnknownHeader[] 后,里面有值。可见是不能识别AXIS发送来的SoapHeader。

        仔细对比Dotnet生成的WSDL,和原来的定义的WSDL相关内容:

    DotNet' WSDL
    Java's WSDL

          我感觉只有一个区别,就是Dotnet生成的有:form="unqualified" ,而Java原来的没有。所以Dotnet不能识别有Prefix的NodeName,造成不能识别。例如: 

    Java发过来的 Soap
    Dotnet 要求的格式

    就因为有一个 xmlns="",造成不能识别该SoapHeader。当然修正的方法也很简单,只要把NotifySOAPHeader的每个属性的元数据修改一下,像下面的示例:

    原来生成的代码

    修正为:

    修正后的类实现

    这样就可以了,不用再写代码从SoapUnknownHeader中取数据了。也没有必须为Java和Dotnet分别写一份代码。

    是不是以后用Dotnet发布时,都用上这个声明呢?我经验不多,大家讨论一下。

  • 相关阅读:
    【SQL Server性能优化】SQL Server 2008之表压缩
    SQL Server 锁的排队机制
    通过DAC来连接SQL Server
    通过SQL Server的数据库邮件功能功能发送邮件
    【SQL 编程你也行】BOM按节点排序
    【SQL Server数据迁移】32位的机器:SQL Server中查询ORACLE的数据
    《女孩梦三十》
    在论坛中出现的比较难的sql问题:26(动态行专列+合并字符串、补足行数)
    【SQL Server高可用性】数据库镜像:同一台机器的两个不同实例上配置数据库镜像 + 另一台见证服务器
    【SQL Server高可用性】数据库复制:修改表结构、新增表、新增存储过程 会被复制到订阅服务器?
  • 原文地址:https://www.cnblogs.com/evlon/p/1396630.html
Copyright © 2011-2022 走看看