webservicesoap:.NET 访问JAVA的WebService使用SOAP头

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

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

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

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


    }

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

     private mySoapHeader soapHeaderValue;

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


        }

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

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

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


时候使用如下代码:


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


            ws.veryWebserviceTest;

这样就可以正确向JAVSWS传送SOAP头信息

Tags:  javawebservice javawebservice soapwebservice webservicesoap

延伸阅读

最新评论

发表评论