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> উপাদানে নির্দিষ্ট করা বার্তা ভেরিয়েবল হয়:

  • সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে) বা
  • সমাধান করা যাবে না (সংজ্ঞায়িত করা হয় না)

উদাহরণস্বরূপ, এই ত্রুটিটি ঘটবে যদি 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 নীতি XML-এ, যাচাই করুন যে <Source> উপাদানে সেট করা ভেরিয়েবলের নাম ফল্ট স্ট্রিং-এ চিহ্নিত পরিবর্তনশীল নামের সাথে মেলে (উপরের ধাপ 1)।

    উদাহরণস্বরূপ, নিম্নলিখিত 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> এলিমেন্টে সেট করা ভেরিয়েবলটি সংজ্ঞায়িত করা হয়েছে এবং সেই ফ্লোতে বিদ্যমান যেখানে নীতিটি কার্যকর হয়।

উপরে দেখানো উদাহরণটি সংশোধন করতে, আপনি response ভেরিয়েবল ব্যবহার করতে <Source > উপাদানটি পরিবর্তন করতে পারেন, যা প্রতিক্রিয়া প্রবাহে বিদ্যমান:

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

NonMessage Variable

ত্রুটি কোড

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> উপাদানটি একটি পরিবর্তনশীলে সেট করা থাকে যা বার্তার প্রকারের নয়।

মেসেজ টাইপ ভেরিয়েবল সম্পূর্ণ HTTP অনুরোধ এবং প্রতিক্রিয়া উপস্থাপন করে। অন্তর্নির্মিত Apigee Edge ফ্লো ভেরিয়েবল request , response এবং message মেসেজ ধরনের। বার্তা ভেরিয়েবল সম্পর্কে আরও জানতে, ভেরিয়েবল রেফারেন্স দেখুন।

রোগ নির্ণয়

  1. ভেরিয়েবলের নাম সনাক্ত করুন যা ফল্ট স্ট্রিং থেকে একটি বার্তা প্রকারের সমাধান করে না। উদাহরণস্বরূপ, নিম্নলিখিত ফল্ট স্ট্রিং-এ ভেরিয়েবলের নাম হল message.content :

    "faultstring": "Variable message.content does not resolve to a Message"
    
  2. নির্দিষ্ট API প্রক্সিতে যেখানে ব্যর্থতা ঘটেছে সেখানে সমস্ত SOAPMessageValidation নীতিগুলি পরীক্ষা করুন৷ এক বা একাধিক SOAPMessage Validation নীতি থাকতে পারে। নির্দিষ্ট SOAPMessageValidation নীতি বা নীতিগুলি সনাক্ত করুন যেখানে <Source> উপাদানে উল্লেখিত ভেরিয়েবল ফল্ট স্ট্রিং-এ চিহ্নিত পরিবর্তনশীল নামের সাথে মেলে (উপরের ধাপ 1)।

    উদাহরণ স্বরূপ, নিম্নলিখিত নীতি <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> উপাদানটি পরিবর্তন করতে পারেন যা বার্তা টাইপ। উদাহরণস্বরূপ, ব্যর্থ SOAPMessageValidation নীতিতে, আপনি request হিসাবে <Source> উপাদানটি নির্দিষ্ট করতে পারেন:

<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 থাকলে এটিও ঘটবে।

এখানে কিছু সম্ভাব্য কারণ রয়েছে যা এই ত্রুটির কারণ হতে পারে:

কারণ বর্ণনা
এক্সএমএল পেলোড মেলে না ইনপুট XML পেলোড SoapMessageValidation নীতিতে নির্দিষ্ট XSD স্কিমা মেনে চলে না।
SOAP পেলোডের সাথে মিল নেই ইনপুট SOAP পেলোড SoapMessageValidation নীতিতে নির্দিষ্ট WSDL সংজ্ঞা মেনে চলে না।
বিকৃত JSON বা XML ইনপুট SOAP পেলোডে সুগঠিত XML বা JSON থাকে না।

কারণ: অমিল XML পেলোড

ইনপুট XML পেলোড 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 নীতির নাম, ব্যর্থতার কারণ এবং XML পেলোড XSD স্কিমার সাথে মেলে না এমন লাইন নম্বর সনাক্ত করুন। এই সব তথ্য ফল্ট স্ট্রিং মধ্যে আছে. উদাহরণস্বরূপ, নিম্নলিখিত ফল্ট স্ট্রিং-এ, SOAPMessage-Validation নীতির নাম হল 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 পেলোড

    <?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 নীতিতে ব্যবহৃত XML স্কিমা সংজ্ঞা ফাইল, 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> থাকতে হবে। যাইহোক, ইনপুট XML পেলোডে শুধুমাত্র একটি চাইল্ড এলিমেন্ট আছে, <name> । ফলস্বরূপ, আপনি ত্রুটি পেতে:

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

রেজোলিউশন

এই বৈধতা ত্রুটি সমাধান করার দুটি উপায় আছে:

সমাধান #1

আপনি যদি নির্ধারণ করেন যে 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>

সমাধান #2

যদি XSD সংজ্ঞা ফাইলটি সঠিক হয়, তাহলে ইনপুট XML পেলোডটি 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 পেলোডের সাথে মিল নেই

এই ত্রুটিটি ঘটে যদি ইনপুট 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. ব্যর্থতার কারণ কী তা বোঝার জন্য ধাপ 1 এ চিহ্নিত লাইন নম্বরে ইনপুট পেলোড পরীক্ষা করুন।

    নমুনা ইনপুট 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. WSDL সংজ্ঞা ফাইল, SOAP-Message-Validation-1.wsdl , SOAPMessageValidation নীতিতে ব্যবহৃত <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]\""
    

রেজোলিউশন

এই বৈধতা ত্রুটি সমাধান করার দুটি উপায় আছে:

সমাধান #1

আপনি যদি নির্ধারণ করেন যে ব্যবহৃত WSDL সংজ্ঞাটি ভুল, আপনি SOAP-Message-Validation-1.wsdl SOAPMessageValidation নীতিতে ব্যবহৃত পরিবর্তন করতে পারেন। উপরের পেলোড উদাহরণটি যাচাই করতে, আপনি নিম্নরূপ ফাইলটি সংশোধন করতে পারেন:

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

সমাধান #2

যদি WSDL সংজ্ঞা সঠিক হয়, তাহলে ইনপুট SOAP পেলোড WSDL সংজ্ঞার সাথে মেলে পরিবর্তন করা যেতে পারে।

উদাহরণস্বরূপ, আপনি নিম্নরূপ ইনপুট 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 নীতির নাম, ব্যর্থতার কারণ এবং XML পেলোডের লাইন নম্বর চিহ্নিত করুন যা 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. ব্যর্থতার কারণ কী তা বোঝার জন্য উপরের ধাপ 1 এ চিহ্নিত লাইন নম্বরে ইনপুট পেলোড পরীক্ষা করুন।

    নমুনা ইনপুট 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>
    

    উপরে দেখানো উদাহরণে, ইনপুট XML-এর লাইন 15-এ <title> উপাদান আছে কিন্তু একটি </title> শেষ ট্যাগ দিয়ে বন্ধ করা হয় না।

রেজোলিউশন

ত্রুটিটি সমাধান করতে, নিশ্চিত করুন যে ইনপুট পেলোডটি বৈধ এবং সঠিকভাবে গঠিত হয়েছে।

উদাহরণস্বরূপ, আপনি নিম্নরূপ ইনপুট XML পেলোড পরিবর্তন করতে পারেন:

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