让Dotnet识别Java发送来的自定义SoapHeader
2009-02-23 16:57
197 查看
在异架构间通讯时,我们一般会采用WS。我遇到的情况是WSDL已经由AXIS生成,我需要用Dotnet实现服务器。
简单实现后,发现里面的 NotifySOAPHeader 总是取不值,添加 SoapUnknownHeader[] 后,里面有值。可见是不能识别AXIS发送来的SoapHeader。
仔细对比Dotnet生成的WSDL,和原来的定义的WSDL相关内容:
修正后的类实现
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1")]
[System.Xml.Serialization.XmlRootAttribute("NotifySOAPHeader",Namespace = "http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1", IsNullable = false)]
public class NotifySOAPHeader : System.Web.Services.Protocols.SoapHeader
{
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified)]
public string spRevId;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified)]
public string spRevpassword;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified)]
public string spId;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified)]
public string SAN;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified)]
public string transactionId;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified)]
public string linkId;
}
这样就可以了,不用再写代码从SoapUnknownHeader中取数据了。也没有必须为Java和Dotnet分别写一份代码。
是不是以后用Dotnet发布时,都用上这个声明呢?我经验不多,大家讨论一下。
简单实现后,发现里面的 NotifySOAPHeader 总是取不值,添加 SoapUnknownHeader[] 后,里面有值。可见是不能识别AXIS发送来的SoapHeader。
仔细对比Dotnet生成的WSDL,和原来的定义的WSDL相关内容:
修正后的类实现
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1")]
[System.Xml.Serialization.XmlRootAttribute("NotifySOAPHeader",Namespace = "http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1", IsNullable = false)]
public class NotifySOAPHeader : System.Web.Services.Protocols.SoapHeader
{
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified)]
public string spRevId;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified)]
public string spRevpassword;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified)]
public string spId;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified)]
public string SAN;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified)]
public string transactionId;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified)]
public string linkId;
}
这样就可以了,不用再写代码从SoapUnknownHeader中取数据了。也没有必须为Java和Dotnet分别写一份代码。
是不是以后用Dotnet发布时,都用上这个声明呢?我经验不多,大家讨论一下。
相关文章推荐
- Java 网络编程 字符流的发送与接收 自定义数据边界
- 使用MailServer自定义邮件服务器java发送邮件-----之一
- Java访问DotNet平台WCF服务,使用自定义对象如IDictionary做参数时,抛出"Did not understand MustUnderstand"异常
- 以太网发送自定义协议数据包java
- 大数据IMF传奇 第19课 spark 二次排序 使用JAVA自定义key 进行二次排序
- java发送邮件没有主题且乱码以及如何exclusion依赖
- 在Java中发送邮件的角本
- java发送html邮件
- Java使用javax.mail发送邮件
- 基于JavaMail的Java邮件发送:简单邮件发送
- 微信公共号开发教程java版——实现自定义菜单(六)
- VC自定义消息的发送与接收的方法实现
- java实现rabbitmq消息的发送接受
- Java_web项目,URL请求地址中项目名设置为自定义变量
- java mail tls方式发送邮件
- java发送短信
- java 关于Map的key可不可以是自定义对象的学习
- java-基于JavaMail的Java邮件发送
- DedeCMS织梦自定义表单发送指定邮件
- java 自定义注解