SOAP मैसेज की पुष्टि करने से जुड़ी, रनटाइम की गड़बड़ी से जुड़ी समस्या हल करना

आपको Apigee Edge दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

SourceMessageNotAvailable

गड़बड़ी कोड

steps.messagevalidation.SourceMessageNotAvailable

गड़बड़ी के जवाब का मुख्य हिस्सा

{
  "fault": {
    "faultstring": "source_var_name message is not
     available for[policy_name]",
    "detail": {
      "Errorcode":
       "steps.messagevalidation.SourceMessageNotAvailable"
     }
  }
}

गड़बड़ी के जवाब का मुख्य हिस्सा उदाहरण

{
  "fault": {
    "faultstring": "request message is not available for MessageValidation: SOAP-Message-Validation-1",
    "detail": {
      "errorcode": "steps.messagevalidation.SourceMessageNotAvailable"
    }
  }
}

वजह

यह गड़बड़ी तब होती है, जब SOAPMessageValidation नीति के <Source> एलिमेंट में तय किया गया message वैरिएबल इनमें से कोई एक हो:

  • दायरे से बाहर (उस खास फ़्लो में उपलब्ध नहीं होता जहां नीति लागू की जा रही हो) या
  • हल नहीं किया जा सकता (तय नहीं है)

उदाहरण के लिए, यह गड़बड़ी तब होती है, जब SOAPMessageValidation नीति में <Source> एलिमेंट को किसी ऐसे वैरिएबल पर सेट किया गया हो जो नीति लागू करने के फ़्लो में मौजूद नहीं हो.

संक्रमण की जांच

  1. गड़बड़ी वाली स्ट्रिंग से, SOAPMessageValidation नीति के नाम और source वैरिएबल के नाम की पहचान करें. उदाहरण के लिए, नीचे दी गई गड़बड़ी वाली स्ट्रिंग में, SOAPMessageValidation नीति का नाम SOAP-Message-Validation-1 है और source वैरिएबल request है:

    "faultstring": "request message is not available for MessageValidation: SOAP-Message-Validation-1"
    
  2. SOAPMessageValidation नीति एक्सएमएल में अपलोड नहीं की गई है. इसमें, पुष्टि करें कि <Source> एलिमेंट में सेट किए गए वैरिएबल का नाम, गड़बड़ी वाली स्ट्रिंग में पहचाने गए वैरिएबल के नाम से मेल खाता है (ऊपर दिया गया पहला चरण).

    उदाहरण के लिए, नीचे दी गई SOAPMessageValidation नीति <Source> एलिमेंट में request नाम वाले वैरिएबल के बारे में बताती है, जो गड़बड़ी वाली स्ट्रिंग में मौजूद वैरिएबल से मेल खाती है:

    <MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1">
        <DisplayName>SOAP Message Validation-1</DisplayName>
        <Properties/>
        <Element namespace="http://schemas.xmlsoap.org/soap/prices">GetPriceResponse</Element>
        <SOAPMessage/>
        <Source>request</Source>
        <ResourceURL>xsd://Script-1.xsd</ResourceURL>
    </MessageValidation>
    
  3. देखें कि <Source> एलिमेंट में इस्तेमाल किया गया वैरिएबल तय किया गया है या नहीं. साथ ही, यह भी देखें कि जिस फ़्लो में SOAPMessageValidation नीति लागू की जा रही है उसमें वैरिएबल उपलब्ध है या नहीं.

    अगर वैरिएबल:

    • दायरे से बाहर है (उस खास फ़्लो में उपलब्ध नहीं है जहां नीति लागू की जा रही है) या
    • हल नहीं किया जा सकता (तय नहीं है)

    तो गड़बड़ी की वजह यही है.

    उदाहरण के लिए, मान लें कि ऊपर दिखाई गई SOAPMessageValidation नीति रिस्पॉन्स फ़्लो में लागू होती है. हालांकि, ऊपर दिए गए <Source> एलिमेंट के उदाहरण में इस्तेमाल किया गया request वैरिएबल सिर्फ़ अनुरोध के फ़्लो में उपलब्ध है.

    रिस्पॉन्स फ़्लो में request वैरिएबल मौजूद नहीं होने की वजह से, आपको यह गड़बड़ी मिलती है:

    "faultstring": "request message is not available for MessageValidation: SOAP-Message-Validation-1"
    

रिज़ॉल्यूशन

पक्का करें कि SOAPMessageValidation नीति के <Source> एलिमेंट में सेट किया गया वैरिएबल, तय किया गया हो और उस फ़्लो में मौजूद हो जहां नीति लागू होती है.

ऊपर दिखाए गए उदाहरण को ठीक करने के लिए, <Source> में बदलाव किया जा सकता है इस्तेमाल करने के लिए एलिमेंट response वैरिएबल, जो रिस्पॉन्स फ़्लो में मौजूद होता है:

<MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1">
    <DisplayName>SOAP Message Validation-1</DisplayName>
    <Properties/>
    <Element namespace="http://schemas.xmlsoap.org/soap/prices">GetPriceResponse</Element>
    <SOAPMessage/>
    <Source>response</Source>
    <ResourceURL>xsd://Script-1.xsd</ResourceURL>
</MessageValidation>

NonMessageVariable

गड़बड़ी कोड

steps.messagevalidation.NonMessageVariable

गड़बड़ी के जवाब का मुख्य हिस्सा

{
  "fault": {
    "faultstring": "Variable var_name does not resolve to a Message"
    "detail": {
      "errorcode": "steps.messagevalidation.NonMessageVariable"
    }
  }
}

गड़बड़ी के जवाब का मुख्य हिस्सा उदाहरण

{
  "fault": {
    "faultstring": "Variable message.content does not resolve to a Message",
    "detail": {
      "errorcode": "steps.messagevalidation.NonMessageVariable"
    }
  }
}

वजह

यह गड़बड़ी तब होती है, जब SOAPMessageValidation नीति में <Source> एलिमेंट किसी ऐसे वैरिएबल पर सेट होता है जो Message टाइप का नहीं होता.

मैसेज टाइप वैरिएबल, सभी एचटीटीपी अनुरोधों और जवाबों को दिखाते हैं. Apigee Edge के बिल्ट-इन फ़्लो वैरिएबल request, response, और message, मैसेज टाइप के होते हैं. मैसेज वैरिएबल के बारे में ज़्यादा जानने के लिए, वैरिएबल का रेफ़रंस देखें.

संक्रमण की जांच

  1. उस वैरिएबल के नाम की पहचान करें जो गड़बड़ी वाली स्ट्रिंग से मैसेज टाइप के तौर पर काम नहीं करता. उदाहरण के लिए, नीचे दी गई गड़बड़ी वाली स्ट्रिंग में वैरिएबल का नाम message.content है:

    "faultstring": "Variable message.content does not resolve to a Message"
    
  2. जिस एपीआई प्रॉक्सी प्रॉक्सी में यह गड़बड़ी हुई है उसमें SOAPMessageValidation की सभी नीतियों की जांच करें. एक या एक से ज़्यादा SOAPMessageValidation नीतियां हो सकती हैं. ऐसी खास SOAPMessageValidation नीति या नीतियों की पहचान करें जिनमें <Source> एलिमेंट में बताया गया वैरिएबल, गड़बड़ी वाली स्ट्रिंग में पहचाने गए वैरिएबल नाम से मेल खाता है (ऊपर दिया गया पहला चरण).

    उदाहरण के लिए, यह नीति <Source> एलिमेंट को message.content नाम के वैरिएबल पर सेट करती है. यह वैरिएबल, गड़बड़ी की जानकारी देने वाली स्ट्रिंग से मेल खाता है:

    <MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1">
        <DisplayName>SOAP Message Validation-1</DisplayName>
        <Properties/>
        <Element namespace="http://schemas.xmlsoap.org/soap/prices">GetPriceResponse</Element>
        <SOAPMessage/>
        <Source>message.content</Source>
        <ResourceURL>xsd://Script-1.xsd</ResourceURL>
    </MessageValidation>
    

    वैरिएबल message.content, मैसेज टाइप का नहीं है, इसलिए आपको यह गड़बड़ी मिली:

    "faultstring": "Variable message.content does not resolve to a Message"
    

रिज़ॉल्यूशन

पक्का करें कि SOAPMessageValidation नीति में शामिल <Source> एलिमेंट को मैसेज टाइप के वैरिएबल पर सेट किया गया हो. यह वैरिएबल, उस फ़्लो में मौजूद होता है जहां नीति लागू होती है.

इस नीति को ठीक करने के लिए, <Source> एलिमेंट में बदलाव किया जा सकता है, ताकि मैसेज टाइप का वैरिएबल तय किया जा सके. उदाहरण के लिए, SOAPMessageverification नीति में काम नहीं करने पर, आपके पास <Source> एलिमेंट को request के तौर पर तय करने का विकल्प है:

<MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1">
    <DisplayName>SOAP Message Validation-1</DisplayName>
    <Properties/>
    <Element namespace="http://sample.com"> sampleObject</Element>
    <SOAPMessage/>
    <Source>request</Source>
    <ResourceURL>xsd://Script-1.xsd</ResourceURL>
</MessageValidation>

अनुमति नहीं मिली

गड़बड़ी कोड

steps.messagevalidation.Failed

गड़बड़ी के जवाब का मुख्य हिस्सा

{
  "fault": {
    "faultstring": "Variable var_name failed with reason: \"reason [Line varline_num
    "detail": {
      "errorcode": "steps.messagevalidation.Failed"
    }
  }
}

गड़बड़ी के जवाब का मुख्य हिस्सा उदाहरण

{
  "fault": {
    "faultstring": "SOAP-Message-Validation-1 failed with reason: \"Expecting a child element but found none [Line 9]\"",
    "detail": {
      "errorcode": "steps.messagevalidation.Failed"
    }
  }
}

वजह

यह गड़बड़ी तब होती है, जब SOAPMessageValidation नीति, XSD स्कीमा या WSDL डेफ़िनिशन के हिसाब से इनपुट मैसेज के पेलोड की पुष्टि नहीं कर पाती. पेलोड मैसेज में गलत JSON या एक्सएमएल होने पर भी ऐसा होगा.

यहां कुछ संभावित वजहें दी गई हैं जिनकी वजह से यह गड़बड़ी हो सकती है:

वजह ब्यौरा
एक्सएमएल पेलोड से मैच नहीं होता इनपुट एक्सएमएल पेलोड, SoapMessageValidation नीति में बताए गए XSD स्कीमा के मुताबिक नहीं है.
एसओएपी पेलोड का मैच नहीं होना इनपुट एसओएपी पेलोड, SoapMessageValidation नीति में दी गई WSDL की परिभाषा के मुताबिक नहीं है.
गलत JSON या एक्सएमएल इनपुट एसओएपी पेलोड में सही तरीके से फ़ॉर्मैट किया गया एक्सएमएल या JSON शामिल नहीं है.

वजह: एक्सएमएल पेलोड का मेल न खाना

यह गड़बड़ी तब होती है, जब इनपुट एक्सएमएल पेलोड, SoapMessageValidation नीति के <ResourceURL> एलिमेंट में बताए गए XSD स्कीमा के मुताबिक न हो.

गड़बड़ी के मैसेज का उदाहरण

{
  "fault": {
    "faultstring": "SOAP-Message-Validation-1 failed with reason: \"Expecting a child element but found none [Line 9]\"",
    "detail": {
      "errorcode": "steps.messagevalidation.Failed"
    }
  }
}

संक्रमण की जांच

  1. SOAPMessageValidation नीति का नाम, गड़बड़ी की वजह, और उस लाइन नंबर की पहचान करें जिस पर एक्सएमएल पेलोड Xएसडी स्कीमा से मेल नहीं खाता. यह सारी जानकारी गड़बड़ी वाली स्ट्रिंग में है. उदाहरण के लिए, यहां दी गई गड़बड़ी वाली स्ट्रिंग में, SOAPMessageValidation नीति का नाम SOAP-Message-Validation-1,फ़ेल होने की वजह Expecting a child element but found none [Line 9] है: और लाइन नंबर 9 है.

    "faultstring": "SOAP-Message-Validation-1 failed with reason: \"Expecting a child element but found none [Line 9]\""
    
  2. SOAPMessageValidation नीति की जांच करें और पुष्टि करें कि यह मैसेज की पुष्टि करने के लिए XSD स्कीमा डेफ़िनिशन फ़ाइल का इस्तेमाल करता है. उदाहरण के लिए, यहां दी गई SOAPMessageValidation नीति में <ResourceURL> एलिमेंट में XSD संसाधन फ़ाइल है:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1">
        <DisplayName>SOAP Message Validation-1</DisplayName>
        <Properties/>
        <SOAPMessage/>
        <Source>request</Source>
        <ResourceURL>xsd://Script-1.xsd</ResourceURL>
    </MessageValidation>
    
  3. ऊपर चरण 1 में पहचाने गए लाइन नंबर पर मौजूद इनपुट पेलोड की जांच करके गड़बड़ी की वजह समझें.

    इनपुट एक्सएमएल पेलोड का सैंपल

    <?xml version="1.0"?>
    <soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
    <soap:Body>
        <shipOrder
        xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
        <shipTo>
            <name>Karl Kalckstein</name>
        </shipTo>
        <items>
            <item>
                <title>I love APIs</title>
                <quantity>1</quantity>
                <price>2.90</price>
            </item>
        </items>
    </shipOrder>
    </soap:Body>
    </soap:Envelope>
    

    ऊपर दिखाए गए उदाहरण में, लाइन 9 में </shipTo> एंड टैग है.

  4. <shipTo> एलिमेंट कैसा दिखना चाहिए, यह जानने के लिए SOAPMessageValidation नीति में इस्तेमाल की गई एक्सएमएल स्कीमा डेफ़िनिशन फ़ाइल, Script-1.xsd की जांच करें:

    ...
    <xsd:element name="shipTo" type="shipAddress"/>
    ...
    <xsd:complexType name="shipAddress">
    <xsd:sequence>
    <xsd:element name="name" type="xsd:string"/>
    <xsd:element name="street" type="xsd:string"/>
    <xsd:element name="address" type="xsd:string"/>
    <xsd:element name="country" type="xsd:string"/>
    </xsd:sequence>
    </xsd:complexType>
    ...
    

    पुष्टि करने के लिए इस्तेमाल किए गए XSD सैंपल के मुताबिक, <shipTo> एलिमेंट को चाइल्ड एलिमेंट मौजूद होते हैं: <name>, <street>, <address>, और <country>. हालांकि, इनपुट एक्सएमएल पेलोड में सिर्फ़ एक चाइल्ड एलिमेंट, <name> है. इस वजह से, आपको गड़बड़ी का यह मैसेज मिलता है:

    "faultstring": "SOAP-Message-Validation-1 failed with reason: \"Expecting a child element but found none [Line 9]\""
    

रिज़ॉल्यूशन

पुष्टि करने से जुड़ी इस गड़बड़ी को ठीक करने के दो तरीके हैं:

पहला समाधान

अगर आपको लगता है कि XSD स्कीमा की परिभाषा में ग़ैर-ज़रूरी सीमाएं लागू होती हैं और <shipTo> एलिमेंट में सिर्फ़ <name> चाइल्ड एलिमेंट की ज़रूरत होती है, तो SOAPMessageValidation नीति में इस्तेमाल किए गए Script-1.xsd में बदलाव किया जा सकता है. ऊपर दिए गए पेलोड के उदाहरण की पुष्टि करने के लिए, Xएसडी फ़ाइल में इस तरह बदलाव किया जा सकता है:

...
<xsd:element name="shipTo" type="shipAddress"/>
...
<xsd:complexType name="shipAddress">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>

दूसरा सलूशन

अगर XSD परिभाषा फ़ाइल सही है, तो इनपुट एक्सएमएल पेलोड को xsd से मैच करने के लिए बदला जा सकता है. उदाहरण के लिए, xsd का पालन करने के लिए, पेलोड में इस तरह बदलाव किया जा सकता है:

<?xml version="1.0">
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body>
    <shipOrder xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
    <shipTo>
        <name>Karl Kalckstein</name>
        <street>1020 Parkway</street>
        <address>Mountain View, CA 94043</address>
        <country>USA</country>
    </shipTo>
    <items>
        <item>
            <title>I love APIs</title>
            <quantity>1</quantity>
            <price>2.90</price>
        </item>
    </items>
</shipOrder>
</soap:Body>
</soap:Envelope>

वजह: मेल न खाने वाले SOAP पेलोड

यह गड़बड़ी तब होती है, जब इनपुट एसओएपी पेलोड, SoapMessageValidation नीति के <ResourceURL> एलिमेंट में दी गई WSDL की परिभाषा के मुताबिक नहीं होता है.

गड़बड़ी के मैसेज का उदाहरण

{
  "fault": {
    "faultstring": "SOAP-Message-Validation-1 failed with reason: \"Element name mismatch. Wildcard? [Line 11]\"",
    "detail": {
      "errorcode": "steps.messagevalidation.Failed"
    }
  }
}

संक्रमण की जांच

  1. SOAPMessageValidation नीति का नाम, गड़बड़ी की वजह, और उस लाइन नंबर की पहचान करें जिस पर एसओएपी पेलोड, WSDL की परिभाषा से मेल नहीं खाता. गड़बड़ी की जानकारी देने वाली स्ट्रिंग से आपको यह सारी जानकारी मिल सकती है. उदाहरण के लिए, नीचे दी गई गड़बड़ी वाली स्ट्रिंग में, SOAPMessageValidation नीति का नाम SOAP-Message-Validation-1 है. इसके सही न होने की वजह \"Element name mismatch. Wildcard? [Line 11]\"" और लाइन नंबर 11 है:

    "faultstring": "SOAP-Message-Validation-1 failed with reason: \"Element name mismatch. Wildcard? [Line 11]\""
    
  2. SOAPMessageValidation नीति की जांच करें और पुष्टि करें कि यह मैसेज की पुष्टि करने के लिए wsdl स्कीमा का इस्तेमाल करता है. उदाहरण के लिए, यहां दी गई SOAPMessageValidation नीति में, <ResourceURL> एलिमेंट में wsdl रिसॉर्स फ़ाइल है:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1">
        <DisplayName>SOAP Message Validation-1</DisplayName>
        <Properties/>
        <SOAPMessage/>
        <Source>request</Source>
     <ResourceURL>wsdl://SOAP-Message-Validation-1.wsdl</ResourceURL>
    </MessageValidation>
    
  3. गड़बड़ी की वजह समझने के लिए, पहले चरण में तय किए गए लाइन नंबर पर मौजूद इनपुट पेलोड की जांच करें.

    इनपुट के एसओएपी पेलोड का सैंपल

    <?xml version="1.0"?>
    <soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
    <soap:Body>
    <shipOrder
    xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
      <shipTo>
        <name>Karl Kalckstein</name>
        <street>1020 Parkway</street>
        <address>Mountain View, CA 94043</address>
        <country>USA</country>
      </shipTo>
      <items>
        <item>
          <title>I love APIs</title>
          <quantity>1</quantity>
          <price>2.90</price>
        </item>
      </items>
    

    ऊपर दिखाए गए उदाहरण में, लाइन 11 में <shipTo> एलिमेंट के नीचे चाइल्ड एलिमेंट <country> है.

  4. SOAPMessageValidation नीति में इस्तेमाल की गई WSDL परिभाषा फ़ाइल SOAP-Message-Validation-1.wsdl की जांच करके देखें कि <shipTo> एलिमेंट के अंदर चाइल्ड एलिमेंट <country> में क्या गलत हो सकता है:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
        <wsdl:types>
          <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="shipOrder" type="order"/>
    <xsd:complexType name="order">
    <xsd:sequence>
    <xsd:element name="shipTo" type="shipAddress"/>
    <xsd:element name="items" type="cdItems"/>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="shipAddress">
    <xsd:sequence>
    <xsd:element name="name" type="xsd:string"/>
    <xsd:element name="street" type="xsd:string"/>
    <xsd:element name="address" type="xsd:string"/>
    </xsd:sequence>
    ...
    

    पुष्टि करने के लिए इस्तेमाल की गई WSDL परिभाषा के मुताबिक, <shipTo>एलिमेंट में <country> चाइल्ड एलिमेंट नहीं होता. इस वजह से, आपको गड़बड़ी का यह मैसेज मिलता है:

    "faultstring": "SOAP-Message-Validation-1 failed with reason: \"Element name mismatch. Wildcard? [Line 11]\""
    

रिज़ॉल्यूशन

पुष्टि करने से जुड़ी इस गड़बड़ी को ठीक करने के दो तरीके हैं:

पहला समाधान

अगर आपको लगता है कि इस्तेमाल की गई WSDL डेफ़िनिशन गलत है, तो SOAPMessageValidation नीति में इस्तेमाल की गई SOAP-Message-Validation-1.wsdl को बदला जा सकता है. ऊपर दिए गए पेलोड उदाहरण की पुष्टि करने के लिए, आप फ़ाइल में इस तरह बदलाव कर सकते हैं:

...
<xsd:complexType name="shipAddress">`
...
<sequence>
    <element name="name" type="xsd:string"/>
    <element name="street" type="xsd:string"/>
    <element name="address" type="xsd:string"/>
    <element name="country" type="xsd:string"/>
</sequence>

दूसरा सलूशन

अगर WSDL डेफ़िनिशन सही है, तो इनपुट SOAP पेलोड को WSDL डेफ़िनिशन से मैच करने के लिए बदला जा सकता है.

उदाहरण के लिए, इनपुट एसओएपी पेलोड में इस तरह बदलाव किया जा सकता है:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body>
<shipOrder xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
    <shipTo>
        <name>Karl Kalckstein</name>
        <street>1020 Parkway</street>
        <address>Mountain View, CA 94043</address>
    </shipTo>
    <items>
        <item>
            <title>I love APIs</title>
            <quantity>1</quantity>
            <price>2.90</price>
        </item>
    </items>

वजह: खराब JSON या XML

यह गड़बड़ी तब होती है, जब इनपुट SOAP पेलोड, SoapMessageValidation नीति के <ResourceURL> एलिमेंट में बताई गई WSDL परिभाषा के मुताबिक न हो.

गड़बड़ी के मैसेज का उदाहरण

{
  "fault": {
    "faultstring": "SOAP-Message-Validation-1 failed with reason: \"Expected <\/title> at line 15(possibly  around char 420)\"",
    "detail": {
      "errorcode": "steps.messagevalidation.Failed"
    }
  }
}

संक्रमण की जांच

  1. SOAPMessageValidation नीति का नाम, गड़बड़ी की वजह, और एक्सएमएल पेलोड की लाइन नंबर की पहचान करें, जो WSDL परिभाषा से मेल नहीं खाता. आपको यह पूरी जानकारी गड़बड़ी वाली स्ट्रिंग में मिलेगी. उदाहरण के लिए, नीचे दी गई गड़बड़ी वाली स्ट्रिंग में, SOAPMessageValidation नीति का नाम SOAP-Message-Validation-1 है. इसके सही न होने की वजह Expected </title> at line 15(possibly around char 420): और लाइन नंबर15. है

    "faultstring": "SOAP-Message-Validation-1 failed with reason: \"Expected </title> at line 15(possibly  around char 420)\""
    
  2. गड़बड़ी की वजह जानने के लिए, ऊपर दिए गए पहले चरण में बताई गई लाइन नंबर पर मौजूद इनपुट पेलोड की जांच करें.

    इनपुट के एसओएपी पेलोड का सैंपल

    <?xml version="1.0"?>
    <soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
    <soap:Body>
    <shipOrder xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
      <shipTo>
        <name>Karl Kalckstein</name>
        <street>1020 Parkway</street>
        <address>Mountain View, CA 94043</address>
        <country>USA</country>
      </shipTo>
      <items>
        <item>
          <title>I love APIs</titles>
          <quantity>1</quantity>
          <price>2.90</price>
        </item>
      </items>
    </shipOrder>
    </soap:Body>
    </soap:Envelope>
    

    ऊपर दिखाए गए उदाहरण में, इनपुट एक्सएमएल की लाइन 15 में <title> एलिमेंट है, लेकिन इसे </title> एंड टैग से बंद नहीं किया गया है.

रिज़ॉल्यूशन

गड़बड़ी को ठीक करने के लिए, पक्का करें कि इनपुट पेलोड मान्य है और उसे सही तरीके से बनाया गया है.

उदाहरण के लिए, इनपुट एक्सएमएल पेलोड में इस तरह बदलाव किया जा सकता है:

...
</shipTo>
<items>
  <item>
    <title>I love APIs</title>
    <quantity>1</quantity>
    <price>2.90</price>
  </item>
</items>
...