C# 调用java写的WebService返回信息

来源:互联网 发布:伪钞制造者 知乎 编辑:程序博客网 时间:2024/05/02 02:48

群里问的一个问题 C# 调用java写的WebService返回信息,之前他一直没调用成功。返回的是worng soap header 错误。

参考别人的代码然后自己有改了下。代码少多了。

java webservice在VS2013中引用步骤:

1:鼠标右键点击项目的引用 =》选择添加服务引用

把要调用的服务地址输入:例如http://218.242.22.128:8080/portalService/services/transServer?wsdl 然后点击转到

然后点击确定



Reference.cs 里面就有要调用的服务里面的所有方法了。

//------------------------------------------------------------------------------// <auto-generated>//     此代码由工具生成。//     运行时版本:4.0.30319.18408////     对此文件的更改可能会导致不正确的行为,并且如果//     重新生成代码,这些更改将会丢失。// </auto-generated>//------------------------------------------------------------------------------namespace NetCallJavaWebService.CallJavaService {            [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]    [System.ServiceModel.ServiceContractAttribute(Namespace="http://webService.htdata.com/", ConfigurationName="CallJavaService.IWebService")]    public interface IWebService {                // CODEGEN: 参数“ResponseDto”需要其他方案信息,使用参数模式无法捕获这些信息。特定特性为“System.Xml.Serialization.XmlElementAttribute”。        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]        [return: System.ServiceModel.MessageParameterAttribute(Name="ResponseDto")]        NetCallJavaWebService.CallJavaService.doTransResponse doTrans(NetCallJavaWebService.CallJavaService.doTrans request);                [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]        System.Threading.Tasks.Task<NetCallJavaWebService.CallJavaService.doTransResponse> doTransAsync(NetCallJavaWebService.CallJavaService.doTrans request);    }        /// <remarks/>    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18408")]    [System.SerializableAttribute()]    [System.Diagnostics.DebuggerStepThroughAttribute()]    [System.ComponentModel.DesignerCategoryAttribute("code")]    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://webService.htdata.com/")]    public partial class requestDto : object, System.ComponentModel.INotifyPropertyChanged {                private string bizCdField;                private string reqBodyField;                private string reqSeqField;                private string reqTmsField;                /// <remarks/>        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]        public string bizCd {            get {                return this.bizCdField;            }            set {                this.bizCdField = value;                this.RaisePropertyChanged("bizCd");            }        }                /// <remarks/>        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=1)]        public string reqBody {            get {                return this.reqBodyField;            }            set {                this.reqBodyField = value;                this.RaisePropertyChanged("reqBody");            }        }                /// <remarks/>        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=2)]        public string reqSeq {            get {                return this.reqSeqField;            }            set {                this.reqSeqField = value;                this.RaisePropertyChanged("reqSeq");            }        }                /// <remarks/>        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=3)]        public string reqTms {            get {                return this.reqTmsField;            }            set {                this.reqTmsField = value;                this.RaisePropertyChanged("reqTms");            }        }                public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;                protected void RaisePropertyChanged(string propertyName) {            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;            if ((propertyChanged != null)) {                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));            }        }    }        /// <remarks/>    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18408")]    [System.SerializableAttribute()]    [System.Diagnostics.DebuggerStepThroughAttribute()]    [System.ComponentModel.DesignerCategoryAttribute("code")]    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://webService.htdata.com/")]    public partial class responseDto : object, System.ComponentModel.INotifyPropertyChanged {                private string bizCdField;                private string reqSeqField;                private string rspBodyField;                private string rspCdField;                private string rspDescField;                /// <remarks/>        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]        public string bizCd {            get {                return this.bizCdField;            }            set {                this.bizCdField = value;                this.RaisePropertyChanged("bizCd");            }        }                /// <remarks/>        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=1)]        public string reqSeq {            get {                return this.reqSeqField;            }            set {                this.reqSeqField = value;                this.RaisePropertyChanged("reqSeq");            }        }                /// <remarks/>        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=2)]        public string rspBody {            get {                return this.rspBodyField;            }            set {                this.rspBodyField = value;                this.RaisePropertyChanged("rspBody");            }        }                /// <remarks/>        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=3)]        public string rspCd {            get {                return this.rspCdField;            }            set {                this.rspCdField = value;                this.RaisePropertyChanged("rspCd");            }        }                /// <remarks/>        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=4)]        public string rspDesc {            get {                return this.rspDescField;            }            set {                this.rspDescField = value;                this.RaisePropertyChanged("rspDesc");            }        }                public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;                protected void RaisePropertyChanged(string propertyName) {            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;            if ((propertyChanged != null)) {                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));            }        }    }        [System.Diagnostics.DebuggerStepThroughAttribute()]    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]    [System.ServiceModel.MessageContractAttribute(WrapperName="doTrans", WrapperNamespace="http://webService.htdata.com/", IsWrapped=true)]    public partial class doTrans {                [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://webService.htdata.com/", Order=0)]        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]        public NetCallJavaWebService.CallJavaService.requestDto requestDto;                public doTrans() {        }                public doTrans(NetCallJavaWebService.CallJavaService.requestDto requestDto) {            this.requestDto = requestDto;        }    }        [System.Diagnostics.DebuggerStepThroughAttribute()]    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]    [System.ServiceModel.MessageContractAttribute(WrapperName="doTransResponse", WrapperNamespace="http://webService.htdata.com/", IsWrapped=true)]    public partial class doTransResponse {                [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://webService.htdata.com/", Order=0)]        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]        public NetCallJavaWebService.CallJavaService.responseDto ResponseDto;                public doTransResponse() {        }                public doTransResponse(NetCallJavaWebService.CallJavaService.responseDto ResponseDto) {            this.ResponseDto = ResponseDto;        }    }        [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]    public interface IWebServiceChannel : NetCallJavaWebService.CallJavaService.IWebService, System.ServiceModel.IClientChannel {    }        [System.Diagnostics.DebuggerStepThroughAttribute()]    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]    public partial class WebServiceClient : System.ServiceModel.ClientBase<NetCallJavaWebService.CallJavaService.IWebService>, NetCallJavaWebService.CallJavaService.IWebService {                public WebServiceClient() {        }                public WebServiceClient(string endpointConfigurationName) :                 base(endpointConfigurationName) {        }                public WebServiceClient(string endpointConfigurationName, string remoteAddress) :                 base(endpointConfigurationName, remoteAddress) {        }                public WebServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :                 base(endpointConfigurationName, remoteAddress) {        }                public WebServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :                 base(binding, remoteAddress) {        }                [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]        NetCallJavaWebService.CallJavaService.doTransResponse NetCallJavaWebService.CallJavaService.IWebService.doTrans(NetCallJavaWebService.CallJavaService.doTrans request) {            return base.Channel.doTrans(request);        }                public NetCallJavaWebService.CallJavaService.responseDto doTrans(NetCallJavaWebService.CallJavaService.requestDto requestDto) {            NetCallJavaWebService.CallJavaService.doTrans inValue = new NetCallJavaWebService.CallJavaService.doTrans();            inValue.requestDto = requestDto;            NetCallJavaWebService.CallJavaService.doTransResponse retVal = ((NetCallJavaWebService.CallJavaService.IWebService)(this)).doTrans(inValue);            return retVal.ResponseDto;        }                [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]        System.Threading.Tasks.Task<NetCallJavaWebService.CallJavaService.doTransResponse> NetCallJavaWebService.CallJavaService.IWebService.doTransAsync(NetCallJavaWebService.CallJavaService.doTrans request) {            return base.Channel.doTransAsync(request);        }                public System.Threading.Tasks.Task<NetCallJavaWebService.CallJavaService.doTransResponse> doTransAsync(NetCallJavaWebService.CallJavaService.requestDto requestDto) {            NetCallJavaWebService.CallJavaService.doTrans inValue = new NetCallJavaWebService.CallJavaService.doTrans();            inValue.requestDto = requestDto;            return ((NetCallJavaWebService.CallJavaService.IWebService)(this)).doTransAsync(inValue);        }    }}

OK 然后再去web.config里面配置登陆验证信息

<system.serviceModel>        <bindings>            <basicHttpBinding>                <binding name="WebServicImplServiceSoapBinding" />            </basicHttpBinding>        </bindings>        <client>//标红代码是添加服务引用自带追加的 <endpoint address="http://218.242.22.128:8080/portalService/services/transServer"                            binding="basicHttpBinding" bindingConfiguration="WebServicImplServiceSoapBinding"                            contract="CallJavaService.IWebService" name="WebServicImplPort">                        <!--数据交互    用户名和密码安全检查-->//配置登陆用户名和密码 <headers>                            <checkHeader>                                <userId>test1</userId>                                <userPass>123456789</userPass>                            </checkHeader>                        </headers>                    </endpoint>        </client>    </system.serviceModel>

C#代码:

protected void Button1_Click(object sender, EventArgs e){java webservice 的标准 //<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">//<soap:Header><checkHeader><userId>shenghetong</userId>//<userPass>shenghetong123</userPass></checkHeader></soap:Header>//<soap:Body><ns2:doTrans xmlns:ns2="http://webService.htdata.com/"><requestDto>//<bizCd>cardInfoQuery</bizCd>//<reqBody>dxHDkYKAI8ENS0vp6H2r+IsxQAc6Lt3RtS+kbl9x20tu3an1XZkuI2jBd6H8NVlwAXB3xr5ID5M=</reqBody>//<reqSeq>qd111111111</reqSeq><reqTms>99999999111111</reqTms></requestDto></ns2:doTrans></soap:Body></soap:Envelope>//<soap:Header><checkHeader><userId>shenghetong</userId>//<userPass>shenghetong123</userPass><eckHeader></soap:Header>//环境访问WSDL地址http://218.242.22.128:8080/portalService/services/transServer?wsdl string result = "wrong!";try{CallJavaService.WebServiceClient hf = new CallJavaService.WebServiceClient();CallJavaService.requestDto rqst = new CallJavaService.requestDto();rqst.reqSeq = "qd111111111";rqst.bizCd = "cardInfoQuery";rqst.reqBody = "dxHDkYKAI8ENS0vp6H2r+IsxQAc6Lt3RtS+kbl9x20tu3an1XZkuI2jBd6H8NVlwAXB3xr5ID5M=";rqst.reqTms = "99999999111111";result = hf.doTrans(rqst).rspCd + "<br/>" + hf.doTrans(rqst).rspDesc + "<br/>"+ hf.doTrans(rqst).rspBody;Response.Write(result);}catch (Exception ex){System.IO.File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + "wrong.log", ex.Message);}}

返回信息:

0000
succes!
JKWGMHn0XKZJhZZtjXKX2++g4HoR+1YGuzLDXwPYd8z2y1a0Vng6c7R/x2IvsRMjqurBrYZ2lJltuC2SlBL28wFqqUQccuH2Pa1JjM0MSqbyja9T/ggDUwPOFZYoJ9we97qByZivKOzmK9dITyNiGWoopZsWZcwjWV3L/YK9LAPlK8v1/7qTXD+sJER9ZyE84SY8AveiQlAUcHmrKW92l2go5fgpo9+E


到这来就C#  调用java webservice 结束了。

参考:

http://blog.csdn.net/yenange/article/details/5824967

http://www.cnblogs.com/huashanlin/archive/2008/06/30/1232315.html

0 0