• .NET 访问JAVA的WebService使用SOAP头


    进来做的项目需要和JAVA的WebServices进行交互,其中访问WS的时候需要传入SOAP头进行验证。其中关键就是SOAP头内容。由于JAVA的WS在.NET下生成的代理是没有SOAP头的内容,所以需要手工修改代理类,达到可以传输SOAP头的目的。

    1:修改代理类,建立SOAP头的对象:

     /// <remarks/>
        [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3053")]
        [System.SerializableAttribute()]
        [System.Diagnostics.DebuggerStepThroughAttribute()]
        [System.ComponentModel.DesignerCategoryAttribute("code")]  
        [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = true)]
        public partial class MySoapHeader : System.Web.Services.Protocols.SoapHeader
        {
            private string tokenValue;
            private System.Xml.XmlAttribute[] anyAttrField;
            /// <remarks/>
            //[XmlIgnoreAttribute]
            //[XmlAttribute("")]
            [XmlTextAttribute()]
            public string TokenValue
            {
                get
                {
                    return this.tokenValue;
                }
                set
                {
                    this.tokenValue = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAnyAttributeAttribute()]
            public System.Xml.XmlAttribute[] AnyAttr
            {
                get
                {
                    return this.anyAttrField;
                }
                set
                {
                    this.anyAttrField = value;
                }
            }

        }

    2:修改代理类,添加一个SOAP对象:

         private mySoapHeader soapHeaderValue;

        public MySoapHeader SoapHeaderValue
            {
                get
                {
                    return this.soapHeaderValue;
                }
                set
                {
                    this.soapHeaderValue = value;
                }

            }

     3:在需要SOAP上方法上添加如下的代码:

            [System.Web.Services.Protocols.SoapHeaderAttribute("SoapHeaderValue")]

       public bool verifyWebserviceTest()
            {
                object[] results = this.Invoke("verifyWebserviceTest", new object[0]);
                return ((bool)(results[0]));
            }

    调用的时候使用如下代码:

      ArcWS.ManDispCmdSessionBeanService ws = new ARSSMonSite.ArcWS.ManDispCmdSessionBeanService();
                ArcWS.loginToken soapHeader = new ARSSMonSite.ArcWS.loginToken();
                soapHeader.TokenValue = "arsssongguixiang#19990101010101";
                ws.SoapHeaderValue = soapHeader;

                ws.verifyWebserviceTest();

    这样,就可以正确的向JAVS的WS传送SOAP头的信息。


  • 相关阅读:
    js浅拷贝和深拷贝
    使用slice和concat对数组的深拷贝和浅拷贝
    JS数组常用方法---8、concat方法
    JS数组常用方法---7、join方法
    js中将类数组转换为数组的几种方法
    JS 使用const声明常量的本质(很多人都有误解)
    JS中对象数组按照对象的某个属性进行排序
    vue源码分析参考---2、数据代理
    vue源码分析参考---1、准备工作
    ES6课程---5、形参默认值
  • 原文地址:https://www.cnblogs.com/songsgroup/p/1319865.html
Copyright © 2020-2023  润新知