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

Apigee Edge का दस्तावेज़ देखा जा रहा है.
Apigee X के दस्तावेज़ पर जाएं.
info

पर क्लिक करें.

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> एलिमेंट को, Message टाइप के वैरिएबल पर सेट किया गया हो. यह वैरिएबल उस फ़्लो में मौजूद होना चाहिए जहां नीति लागू होती है.

नीति को ठीक करने के लिए, <Source> एलिमेंट में बदलाव करके, Message टाइप का वैरिएबल तय किया जा सकता है. उदाहरण के लिए, 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://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 या XML मौजूद हो.

इस गड़बड़ी की ये वजहें हो सकती हैं:

वजह ब्यौरा
एक्सएमएल पेलोड का मेल न खाना इनपुट एक्सएमएल पेलोड, SoapMessageValidation नीति में बताए गए XSD स्कीमा के मुताबिक नहीं है.
SOAP पेलोड का मेल न खाना इनपुट एसओएपी पेलोड, SoapMessageValidation नीति में दी गई WSDL डेफ़िनिशन के मुताबिक नहीं है.
गलत फ़ॉर्मैट वाला JSON या XML इनपुट किए गए SOAP पेलोड में सही फ़ॉर्मैट वाला एक्सएमएल या 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 नीति का नाम, पुष्टि न हो पाने की वजह, और लाइन नंबर की पहचान करें. इस लाइन नंबर पर, एक्सएमएल पेलोड, XSD स्कीमा से मेल नहीं खाता. यह सारी जानकारी, गड़बड़ी वाली स्ट्रिंग में होती है. उदाहरण के लिए, यहां दिए गए फ़ॉल्ट स्ट्रिंग में, SOAPMessageValidation नीति का नाम SOAP-Message-Validation-1,the reason for the failure is 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. गड़बड़ी की वजह जानने के लिए, ऊपर दिए गए पहले चरण में बताए गए लाइन नंबर पर इनपुट पेलोड की जांच करें.

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

    <?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. SOAPMessageValidation नीति में इस्तेमाल की गई एक्सएमएल स्कीमा डेफ़िनिशन फ़ाइल, Script-1.xsd की जांच करें. इससे आपको पता चलेगा कि <shipTo> एलिमेंट कैसा दिखना चाहिए:

    ...
    <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 में बदलाव किया जा सकता है. ऊपर दिए गए पेलोड के उदाहरण की पुष्टि करने के लिए, XSD फ़ाइल में यहां दिए गए तरीके से बदलाव करें:

...
<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 नीति का नाम, पुष्टि न हो पाने की वजह, और लाइन नंबर की पहचान करें. इस लाइन नंबर पर, SOAP पेलोड, 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. गड़बड़ी की वजह जानने के लिए, पहले चरण में पहचाने गए लाइन नंबर पर इनपुट पेलोड की जांच करें.

    इनपुट के तौर पर इस्तेमाल किए गए SOAP पेलोड का सैंपल

    <?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 Definition फ़ाइल, 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 की परिभाषा सही है, तो WSDL की परिभाषा से मेल खाने के लिए, इनपुट SOAP पेलोड को बदला जा सकता है.

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

<?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 नीति का नाम, पुष्टि न हो पाने की वजह, और डब्ल्यूएसडीएल की परिभाषा से मेल न खाने वाले एक्सएमएल पेलोड का लाइन नंबर पता करें. आपको यह सारी जानकारी, गड़बड़ी की स्ट्रिंग में मिल सकती है. उदाहरण के लिए, यहां दिए गए फ़ॉल्ट स्ट्रिंग में, 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. गड़बड़ी की वजह जानने के लिए, ऊपर दिए गए पहले चरण में बताए गए लाइन नंबर पर इनपुट पेलोड की जांच करें.

    इनपुट के तौर पर इस्तेमाल किए गए SOAP पेलोड का सैंपल

    <?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>
...