wcf अलग उपसर्ग एसओएपी एक्सएमएल इसके बजाय सीधा नामस्थान



हिंदी ग्रामर उपसर्ग (1)

एससीसी यूटील द्वारा उत्पन्न प्रॉक्सी क्लास मैं तय किया है। मैंने एक नई संपत्ति जोड़ दी जो उपसर्ग का उत्सर्जन करती है उदाहरण के लिए वर्ग SignonRq में, मैंने निम्न संपत्ति जोड़ दी है उस एक्सएमएल को उपसर्ग एसीडी के साथ सीरियल किया गया था

        [XmlNamespaceDeclarations()]
    public XmlSerializerNamespaces xmlsn
    {
        get
        {
            XmlSerializerNamespaces xsn = new XmlSerializerNamespaces();
            xsn.Add("acd", "http://www.ACORD.org/standards/PC_Surety/ACORD1/xml/");
            return xsn;
        }
        set
        {
            //Just provide an empty setter. 
        }
    }

उदाहरण के लिए वर्ग ACORD, मैं निम्नलिखित संपत्ति जोड़ दिया उस एक्सएमएल को सीरियल किया गया था जिसमें उपसर्ग STC1 था।

        [XmlNamespaceDeclarations()]
    public XmlSerializerNamespaces xmlsn
    {
        get
        {
            XmlSerializerNamespaces xsn = new XmlSerializerNamespaces();
            xsn.Add("stc1", "http://schemas.WebServiceProvider.com/us/ileads/types/Servicing");
            return xsn;
        }
        set
        {
            //Just provide an empty setter. 
        }
    }

मैं हमारी व्यावसायिक सेवाओं को एकीकृत करने के लिए हमारे एक साथी के साथ काम कर रहा हूं मैं भागीदार वेब सेवा के साथ संवाद करने के लिए WCF (.Net 3.5) का उपयोग कर रहा हूं। मुझे लगता है कि साथी वेब सेवा जावा में लिखा है

एससीसी उपयोग का उपयोग मैं प्रॉक्सी क्लास उत्पन्न करता हूं। बजाय डाटाकांटाट्रैक्ट सीरियलइज़र, svcutil उपयोग किया xmlserializer लेकिन साथी और वेब सेवा प्रतिक्रिया द्वारा प्रदान की गई डब्ल्यूएसडीएल एसओएपी एक्सएमएल मेल नहीं खाता है। चूंकि भागीदार wsdl को बदलने में दिलचस्पी नहीं रखते, इसलिए मैंने प्रतिक्रिया से मेल खाने के लिए मैन्युअल रूप से डब्ल्यूएसडीएल डाउनलोड कर दिया है। उस मुद्दे को तय किया गया है

अब मैं अलग समस्या में चल रहा हूं। जब मैं वेब सेवा के लिए अनुरोध भेजता हूं, तो यह हमेशा विफल रहा। फिर मैंने सोफे अनुरोध को भागीदार को अग्रेषित करने के लिए बुद्धिमत्ता का इस्तेमाल किया साझेदार ने कहा कि अनुरोध द्वारा भेजे गए xml नामस्थान उनके सिस्टम के विरुद्ध मान्य नहीं है। उन्होंने नमूना SOAP अनुरोध के साथ भी जवाब दिया।

दोनों अनुरोधों की तुलना करके, नामस्थान सही दिखता है। लेकिन पार्टनर एक्सएमएल ने नाम स्थान को परिभाषित करने के लिए उपसर्ग का उपयोग किया है और तत्वों को प्रीफिक्स किया गया है। जबकि हमारे पक्ष में एक्सएमएल में उपसर्ग नहीं है, इसके बजाय नामस्थानों को सीधे मूल तत्व में प्रयोग किया जाता है।

यहां वह एक्सएमएल है जिसे हमने भेजा है

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <iL21stCentRq xmlns="http://schemas.WebServiceProvider.com/us/ileads/messages/Servicing">
        <ACORD xmlns="http://schemas.WebServiceProvider.com/us/ileads/types/Servicing">
            <SignonRq xmlns="http://www.ACORD.org/standards/PC_Surety/ACORD1/xml/">
                <SignonPswd>
                    <CustId>
                        <SPName>111</SPName>
                    </CustId>
                </SignonPswd>
            </SignonRq>
        </ACORD>
    </iL21stCentRq>
</s:Body>

यहां नमूना एक्सएमएल है जो हमारे साथी से अपेक्षा करता है

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:stc="http://schemas.WebServiceProvider.com/us/ileads/messages/Servicing" xmlns:stc1="http://schemas.WebServiceProvider.com/us/ileads/types/Servicing" xmlns:acd="http://www.ACORD.org/standards/PC_Surety/ACORD1/xml/">
<soapenv:Header/>
<soapenv:Body>
    <stc:iL21stCentRq>
        <stc:input>
            <stc1:ACORD>
                <acd:SignonRq>
                    <acd:SignonPswd>
                        <acd:CustId>
                            <acd:SPName>yourcompany.com</acd:SPName>
                        </acd:CustId>
                    </acd:SignonPswd>
                </acd:SignonRq>
            </stc1:ACORD>
        </stc:input>
    </stc:iL21stCentRq>
</soapenv:Body>

यदि आप दोनों एक्सएमएल की तुलना करते हैं, तो नाम स्थान http://www.ACORD.org/standards/PC_Surety/ACORD1/xml/ पहले से ही "एसीडी" द्वारा भागीदार xml में प्रीफ़िक्स्ड है। पार्टनर हमें उस प्रारूप में भेजना चाहता था।

मुझे लगता है कि साथी एक्सएमएल मानकों का पालन नहीं करता है। यह वाकई साथी की समस्या है लेकिन मेरे पास कोई विकल्प नहीं छोड़ा गया और मेरे पक्ष में एक्सएमएल बदलने की आवश्यकता थी।

हालांकि हम WCF सेवा में क्रमबद्धता को अनुकूलित कर सकते हैं, मुझे विश्वास नहीं है कि इस स्तर पर उपसर्ग बदलने संभव है। इसके अलावा मुझे यकीन नहीं है कि पार्टनर एक्सएमडी XSD के मानकों का पालन करता है।

यदि आप ऊपर दिए गए परिवर्तनों को समायोजित करने के लिए WCF क्रमबद्धता को संशोधित करने के लिए मार्गदर्शन कर सकते हैं, तो मैं इसकी सराहना करता हूं।





xmlserializer