Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
286 views
in Technique[技术] by (71.8m points)

SAP web service issue in C#

UPDATE: I have WSDL file from SAP web service which is Imported as Connected Services in Visual Studio code, as below:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace SAPWebService
{
          [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
    [System.ServiceModel.ServiceContractAttribute(Namespace="urn:sap-com:document:sap:rfc:functions", ConfigurationName="ServiceReference1.ZMM_SIF_KARAKTERISTIKE_MAT")]
    public interface ZMM_SIF_KARAKTERISTIKE_MAT
    {
        
        [System.ServiceModel.OperationContractAttribute(Action="urn:sap-com:document:sap:rfc:functions:ZMM_SIF_KARAKTERISTIKE_MAT:ZMM_SIF_KARAKTE" +
            "RISTIKE_MATRequest", ReplyAction="urn:sap-com:document:sap:rfc:functions:ZMM_SIF_KARAKTERISTIKE_MAT:ZMM_SIF_KARAKTE" +
            "RISTIKE_MATResponse")]
        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
        System.Threading.Tasks.Task<SAPWebService.ZMM_SIF_KARAKTERISTIKE_MATResponse1> ZMM_SIF_KARAKTERISTIKE_MATAsync(SAPWebService.ZMM_SIF_KARAKTERISTIKE_MATRequest request);
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:sap-com:document:sap:rfc:functions")]
    public partial class ZMM_SIF_KARAKTERISTIKE_MAT1
    {
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:sap-com:document:sap:rfc:functions")]
    public partial class ZMM_KARAKTERISTIKE_MAT_LINE
    {
        
        private string kLASAField;
        
        private string kARAKTERISTIKAField;
        
        private string vREDNOSTField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]
        public string KLASA
        {
            get
            {
                return this.kLASAField;
            }
            set
            {
                this.kLASAField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=1)]
        public string KARAKTERISTIKA
        {
            get
            {
                return this.kARAKTERISTIKAField;
            }
            set
            {
                this.kARAKTERISTIKAField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=2)]
        public string VREDNOST
        {
            get
            {
                return this.vREDNOSTField;
            }
            set
            {
                this.vREDNOSTField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:sap-com:document:sap:rfc:functions")]
    public partial class ZMM_SIF_KARAKTERISTIKE_MATResponse
    {
        
        private ZMM_KARAKTERISTIKE_MAT_LINE[] kARAKTERISTIKAField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlArrayAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]
        [System.Xml.Serialization.XmlArrayItemAttribute("item", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=false)]
        public ZMM_KARAKTERISTIKE_MAT_LINE[] KARAKTERISTIKA
        {
            get
            {
                return this.kARAKTERISTIKAField;
            }
            set
            {
                this.kARAKTERISTIKAField = value;
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
    [System.ServiceModel.MessageContractAttribute(IsWrapped=false)]
    public partial class ZMM_SIF_KARAKTERISTIKE_MATRequest
    {
        
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="urn:sap-com:document:sap:rfc:functions", Order=0)]
        public SAPWebService.ZMM_SIF_KARAKTERISTIKE_MAT ZMM_SIF_KARAKTERISTIKE_MAT;
        
        public ZMM_SIF_KARAKTERISTIKE_MATRequest()
        {
        }
        
        public ZMM_SIF_KARAKTERISTIKE_MATRequest(SAPWebService.ZMM_SIF_KARAKTERISTIKE_MAT ZMM_SIF_KARAKTERISTIKE_MAT)
        {
            this.ZMM_SIF_KARAKTERISTIKE_MAT = ZMM_SIF_KARAKTERISTIKE_MAT;
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
    [System.ServiceModel.MessageContractAttribute(IsWrapped=false)]
    public partial class ZMM_SIF_KARAKTERISTIKE_MATResponse1
    {
        
        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="urn:sap-com:document:sap:rfc:functions", Order=0)]
        public SAPWebService.ZMM_SIF_KARAKTERISTIKE_MATResponse ZMM_SIF_KARAKTERISTIKE_MATResponse;
        
        public ZMM_SIF_KARAKTERISTIKE_MATResponse1()
        {
        }
        
        public ZMM_SIF_KARAKTERISTIKE_MATResponse1(SAPWebService.ZMM_SIF_KARAKTERISTIKE_MATResponse ZMM_SIF_KARAKTERISTIKE_MATResponse)
        {
            this.ZMM_SIF_KARAKTERISTIKE_MATResponse = ZMM_SIF_KARAKTERISTIKE_MATResponse;
        }
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
    public interface ZMM_SIF_KARAKTERISTIKE_MATChannel : SAPWebService.ZMM_SIF_KARAKTERISTIKE_MAT, System.ServiceModel.IClientChannel
    {
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
    public partial class ZMM_SIF_KARAKTERISTIKE_MATClient : System.ServiceModel.ClientBase<SAPWebService.ZMM_SIF_KARAKTERISTIKE_MAT>, SAPWebService.ZMM_SIF_KARAKTERISTIKE_MAT
    {
        
        public ZMM_SIF_KARAKTERISTIKE_MATClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
                base(binding, remoteAddress)
        {
        }
        
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
        System.Threading.Tasks.Task<SAPWebService.ZMM_SIF_KARAKTERISTIKE_MATResponse1> SAPWebService.ZMM_SIF_KARAKTERISTIKE_MAT.ZMM_SIF_KARAKTERISTIKE_MATAsync(SAPWebService.ZMM_SIF_KARAKTERISTIKE_MATRequest request)
        {
            return base.Channel.ZMM_SIF_KARAKTERISTIKE_MATAsync(request);
        }
        
        public System.Threading.Tasks.Task<SAPWebService.ZMM_SIF_KARAKTERISTIKE_MATResponse1> ZMM_SIF_KARAKTERISTIKE_MATAsync(SAPWebService.ZMM_SIF_KARAKTERISTIKE_MAT ZMM_SIF_KARAKTERISTIKE_MAT)
        {
            SAPWebService.ZMM_SIF_KARAKTERISTIKE_MATRequest inValue = new SAPWebService.ZMM_SIF_KARAKTERISTIKE_MATRequest();
            inValue.ZMM_SIF_KARAKTERISTIKE_MAT = ZMM_SIF_KARAKTERISTIKE_MAT;
            return ((SAPWebService.ZMM_SIF_KARAKTERISTIKE_MAT)(this)).ZMM_SIF_KARAKTERISTIKE_MATAsync(inValue);
        }
        
        public virtual System.Threading.Tasks.Task OpenAsync()
        {
            return System.Threading.Tasks.Task.Factory.FromAsync(((System.ServiceModel.ICommunicationObject)(this)).BeginOpen(null, null), new System.Action<System.IAsyncResult>(((System.ServiceModel.ICommunicationObject)(this)).EndOpen));
        }
        
        public virtual System.Threading.Tasks.Task CloseAsync()
        {
            return System.Threading.Tasks.Task.Factory.FromAsync(((System.ServiceModel.ICommunicationObject)(this)).BeginClose(null, null), new System.Action<System.IAsyncResult>(((System.ServiceModel.ICommunicationObject)(this)).EndClose));
        }
    }
}

IMPORTANT UPDATE:

When I added wsdl as connected service, I get this error:

Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='urn:sap-com:document:sap:rfc:functions']/wsdl:binding[@name='250_soap12']
XPath to Error Source: //wsdl:definitions[@targetNamespace='urn:sap-com:document:sap:rfc:functions']/wsdl:service[@name='ZMM_SIF_KARAKTERISTIKE_MAT']/wsdl:port[@name='250_soap12']
Cannot import wsdl:binding
Detail: Name cannot begin with the '2' character, hexadecimal value 0x32.
Parameter name: name
XPath to Error Source: //wsdl:definitions[@targetNamespace='urn:sap-com:document:sap:rfc:functions']/wsdl:binding[@name='250_soap12']
Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='urn:sap-com:document:sap:rfc:functions']/wsdl:binding[@name='250']
XPath to Error Source: //wsdl:definitions[@targetNamespace='urn:sap-com:document:sap:rfc:functions']/wsdl:service[@name='ZMM_SIF_KARAKTERISTIKE_MAT']/wsdl:port[@name='250']
Cannot import wsdl:binding
Detail: Name cannot begin with the '2' character, hexadecimal value 0x32.
Parameter name: name
XPath to Error Source: //wsdl:definitions[@targetNamespace='urn:sap-com:document:sap:rfc:functions']/wsdl:binding[@name='250']
The optional WSDL extension element 'Policy' from namespace 'http://schemas.xmlsoap.org/ws/2004/09/policy' was not handled.
XPath: //wsdl:definitions[@targetNamespace='urn:sap-com:document:sap:rfc:functions']/wsdl:portType[@name='ZMM_SIF_KARAKTERISTIKE_MAT']/wsdl:operation[@name='ZMM_SIF_KARAKTERISTIKE_MAT']
The optional WSDL extension element 'Policy' from namespace 'http://schemas.xmlsoap.org/ws/2004/09/policy' was not handled.
XPath: //wsdl:definitions[@targetNamespace='urn:sap-com:document:sap:rfc:functions']/wsdl:portType[@name='ZMM_SIF_KARAKTERISTIKE_MAT']





    

And I tried to consume it from C# in method as below:

    public class SAPDemoApi : ISAPDemoApi
    {
        public readonly string serviceUrl = "http://GIRKV06S04.gir.local:8000/sap/bc/srt/rfc/sap/zmm_sif_karakteristike_mat/250/zmm_sif_karakteristike_mat/250";
        public readonly EndpointAddress endpointAddress;
        public readonly BasicHttpBinding basicHttpBinding;

        public SAPDemoApi()
        {
            endpointAddress = new EndpointAddress(serviceUrl);

        

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I added an Envelope and Body to your classes to get the code to work. I used Xml Serialize to test the code and commented out what wasn't needed to deserialize the object. You need to modify your code to do similar to what I've done

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
namespace ConsoleApplication177
{
    class Program
    {
        const string FILENAME = @"c:empest.xml";
        static void Main(string[] args)
        {
            string xml = File.ReadAllText(FILENAME);
            StringReader sReader = new StringReader(xml);
            XmlReader xReader = XmlReader.Create(sReader);
            XmlSerializer serializer = new XmlSerializer(typeof(Envelope));
            Envelope envelope = (Envelope)serializer.Deserialize(xReader);

        }
    }
    [XmlRoot(ElementName = "Envelope" ,Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
    public class Envelope
    {
        [XmlElement(Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
        public Body Body { get; set; }
    }

    public class Body
    {
        [XmlElement(ElementName = "ZMM_SIF_KARAKTERISTIKE_MATResponse", Namespace = "urn:sap-com:document:sap:rfc:functions")]
        public ZMM_SIF_KARAKTERISTIKE_MATResponse ZMM_SIF_KARAKTERISTIKE_MATResponse { get; set; }
    }

    ///// <remarks/>
    //[System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
    //[System.Diagnostics.DebuggerStepThroughAttribute()]
    //[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "urn:sap-com:document:sap:rfc:functions")]
    //public partial class ZMM_SIF_KARAKTERISTIKE_MAT1
    //{
    //}

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "urn:sap-com:document:sap:rfc:functions")]
    public partial class ZMM_KARAKTERISTIKE_MAT_LINE
    {

        private string kLASAField;

        private string kARAKTERISTIKAField;

        private string vREDNOSTField;

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 0)]
        public string KLASA
        {
            get
            {
                return this.kLASAField;
            }
            set
            {
                this.kLASAField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 1)]
        public string KARAKTERISTIKA
        {
            get
            {
                return this.kARAKTERISTIKAField;
            }
            set
            {
                this.kARAKTERISTIKAField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 2)]
        public string VREDNOST
        {
            get
            {
                return this.vREDNOSTField;
            }
            set
            {
                this.vREDNOSTField = value;
            }
        }
    }

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "urn:sap-com:document:sap:rfc:functions")]
    public class ZMM_SIF_KARAKTERISTIKE_MATResponse
    {

        private ZMM_KARAKTERISTIKE_MAT_LINE[] kARAKTERISTIKAField;

        /// <remarks/>
        [System.Xml.Serialization.XmlArrayAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 0)]
        [System.Xml.Serialization.XmlArrayItemAttribute("item", Form = System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable = false)]
        public ZMM_KARAKTERISTIKE_MAT_LINE[] KARAKTERISTIKA
        {
            get
            {
                return this.kARAKTERISTIKAField;
            }
            set
            {
                this.kARAKTERISTIKAField = value;
            }
        }
    }

    //[System.Diagnostics.DebuggerStepThroughAttribute()]
    //[System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
    //[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
    //[System.ServiceModel.MessageContractAttribute(IsWrapped = false)]
    //public partial class ZMM_SIF_KARAKTERISTIKE_MATRequest
    //{

    //    [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "urn:sap-com:document:sap:rfc:functions", Order = 0)]
    //    public SAPWebService.ZMM_SIF_KARAKTERISTIKE_MAT ZMM_SIF_KARAKTERISTIKE_MAT;

    //    public ZMM_SIF_KARAKTERISTIKE_MATRequest()
    //    {
    //    }

    //    public ZMM_SIF_KARAKTERISTIKE_MATRequest(SAPWebService.ZMM_SIF_KARAKTERISTIKE_MAT ZMM_SIF_KARAKTERISTIKE_MAT)
    //    {
    //        this.ZMM_SIF_KARAKTERISTIKE_MAT = ZMM_SIF_KARAKTERISTIKE_MAT;
    //    }
    //}

    //[System.Diagnostics.DebuggerStepThroughAttribute()]
    //[System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
    //[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
    //[System.ServiceModel.MessageContractAttribute(IsWrapped = false)]
    //public partial class ZMM_SIF_KARAKTERISTIKE_MATResponse1
    //{

    //    [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "urn:sap-com:document:sap:rfc:functions", Order = 0)]
    //    public SAPWebService.ZMM_SIF_KARAKTERISTIKE_MATResponse ZMM_SIF_KARAKTERISTIKE_MATResponse;

    //    public ZMM_SIF_KARAKTERISTIKE_MATResponse1()
    //    {
    //    }

    //    public ZMM_SIF_KARAKTERISTIKE_MATResponse1(SAPWebService.ZMM_SIF_KARAKTERISTIKE_MATResponse ZMM_SIF_KARAKTERISTIKE_MATResponse)
    //    {
    //        this.ZMM_SIF_KARAKTERISTIKE_MATResponse = ZMM_SIF_KARAKTERISTIKE_MATResponse;
    //    }
    //}

    //[System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
    //public interface ZMM_SIF_KARAKTERISTIKE_MATChannel : SAPWebService.ZMM_SIF_KARAKTERISTIKE_MAT, System.ServiceModel.IClientChannel
    //{
    //}

    //[System.Diagnostics.DebuggerStepThroughAttribute()]
    //[System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
    //public partial class ZMM_SIF_KARAKTERISTIKE_MATClient : System.ServiceModel.ClientBase<SAPWebService.ZMM_SIF_KARAKTERISTIKE_MAT>, SAPWebService.ZMM_SIF_KARAKTERISTIKE_MAT
    //{

    //    public ZMM_SIF_KARAKTERISTIKE_MATClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
    //        base(binding, remoteAddress)
    //    {
    //    }

    //    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
    //    System.Threading.Tasks.Task<SAPWebService.ZMM_SIF_KARAKTERISTIKE_MATResponse1> SAPWebService.ZMM_SIF_KARAKTERISTIKE_MAT.ZMM_SIF_KARAKTERISTIKE_MATAsync(SAPWebService.ZMM_SIF_KARAKTERISTIKE_MATRequest request)
    //    {
    //        return base.Channel.ZMM_SIF_KARAKTERISTIKE_MATAsync(request);
    //    }

    //    public System.Threading.Tasks.Task<SAPWebService.ZMM_SIF_KARAKTERISTIKE_MATResponse1> ZMM_SIF_KARAKTERISTIKE_MATAsync(SAPWebService.ZMM_SIF_KARAKTERISTIKE_MAT ZMM_SIF_KARAKTERISTIKE_MAT)
    //    {
    //        SAPWebService.ZMM_SIF_KARAKTERISTIKE_MATRequest inValue = new SAPWebService.ZMM_SIF_KARAKTERISTIKE_MATRequest();
    //        inValue.ZMM_SIF_KARAKTERISTIKE_MAT = ZMM_SIF_KARAKTERISTIKE_MAT;
    //        return ((SAPWebService.ZMM_SIF_KARAKTERISTIKE_MAT)(this)).ZMM_SIF_KARAKTERISTIKE_MATAsync(inValue);
    //    }

    //    public virtual System.Threading.Tasks.Task OpenAsync()
    //    {
    //        return System.Threading.Tasks.Task.Factory.FromAsync(((System.ServiceModel.ICommunicationObject)(this)).BeginOpen(null, null), new System.Action<System.IAsyncResult>(((System.ServiceModel.ICommunicationObject)(this)).EndOpen));
    //    }

    //    public virtual System.Threading.Tasks.Task CloseAsync()
    //    {
    //        return System.Threading.Tasks.Task.Factory.FromAsync(((System.ServiceModel.ICommunicationObject)(this)).BeginClose(null, null), new System.Action<System.IAsyncResult>(((System.ServiceModel.ICommunicationObject)(this)).EndClose));
    //    }
    //}
   
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...