פתרון בעיות בזמן ריצה של מדיניות XML ל-JSON

אתם צופים במסמכי העזרה של Apigee Edge.
כניסה למסמכי העזרה של Apigee X.
info

SourceUnavailable

קוד שגיאה

steps.xml2json.SourceUnavailable

גוף התגובה לשגיאה

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: Source [source_variable] is not available",
        "detail": {
            "errorcode": "steps.xmltojson.SourceUnavailable"
        }
    }
}

הודעת שגיאה לדוגמה

{
    "fault": {
        "faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available",
        "detail": {
            "errorcode": "steps.xml2json.SourceUnavailable"
        }
    }
}

סיבה

השגיאה הזו מתרחשת אם המשתנה message או המשתנה המחרוזת שצוין ברכיב <Source> של המדיניות להמרת XML ל-JSON הוא:

  • לא בהיקף (לא זמין בתהליך הספציפי שבו המדיניות מופעלת) או
  • לא ניתן לפתור (לא מוגדר)

לדוגמה, השגיאה הזו מתרחשת אם המדיניות של המרת XML ל-JSON אמורה להתבצע בתהליך הבקשה, אבל הרכיב <Source> מוגדר למשתנה response, שלא קיים בתהליך הבקשה.

אבחון

  1. מזהים את מדיניות ה-XML ל-JSON שבה התרחשה השגיאה ואת שם המשתנה שלא זמין. שני הפריטים האלה מופיעים ברכיב faultstring בתשובה לשגיאה. לדוגמה, ב-faultstring הבא, שם המדיניות הוא Convert-XMLToJSON והמשתנה הוא response:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"
    
  2. ב-XML של מדיניות XML ל-JSON שנכשלו, צריך לוודא ששם המשתנה שמוגדר ברכיב <Source> תואם לשם המשתנה שזוהה במחרוזת השגיאה (שלב 1 למעלה). לדוגמה, המדיניות הבאה של XML ל-JSON מציינת משתנה בשם response ברכיב <Source>, שמתאים למה שמופיע ב-faultstring:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
        <DisplayName>Convert-XMLToJSON</DisplayName>
        <Properties/>
        <Format>google</Format>
        <OutputVariable>response</OutputVariable>
        <Source>response</Source>
    </XMLToJSON>
    
  3. קובעים אם המשתנה שנעשה בו שימוש ברכיב <Source> מוגדר וזמין בתהליך שבו מתבצעת מדיניות XML ל-JSON.

  4. אם המשתנה הוא:

    • לא בהיקף (לא זמין בתהליך הספציפי שבו המדיניות מופעלת) או
    • לא ניתן לפתור (לא מוגדר)

    אז זה הגורם לשגיאה.

    לדוגמה, נניח שמדיניות ה-XML ל-JSON שמוצגת למעלה אמורה להתבצע בתהליך הבקשה. חשוב לזכור שהמשתנה response נמצא בשימוש ברכיב <Source> של מדיניות ה-XML ל-JSON. משתנה התגובה זמין רק בתהליך התשובה.

    מאחר שמשתנה התגובה לא קיים בתהליך הבקשה, מופיע קוד השגיאה:

    steps.xml2json.SourceUnavailable
    

רזולוציה

מוודאים שהמשתנה שהוגדר ברכיב <Source> של המדיניות להמרת XML ל-JSON שנכשלה מוגדר וקיים בתהליך שבו המדיניות מופעלת.

כדי לתקן את דוגמת המדיניות להמרת XML ל-JSON שמוצגת למעלה, אפשר לשנות את הרכיב <Source> כך שישתמש במשתנה request כפי שהוא קיים בתהליך הבקשה:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
    <DisplayName>Convert-XMLToJSON</DisplayName>
    <Properties/>
    <Format>google</Format>
    <OutputVariable>response</OutputVariable>
    <Source>request</Source>
</XMLToJSON>

ExecutionFailed

קוד שגיאה

steps.xml2json.ExecutionFailed

גוף התשובה לשגיאה

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: Execution failed. reason: Premature end of document while parsing at line [line_number](possibly  around char [character_number])",
        "detail": {
            "errorcode": "steps.xml2json.ExecutionFailed"
        }
    }
}

גורמים אפשריים

הסיבות האפשריות לשגיאה הזו:

הסיבה תיאור
מטען ייעודי (payload) של קלט חסר המטען הייעודי (payload) של הקלט (XML) ריק.
קלט לא חוקי או עם מבנה שגוי הקלט (XML) שהוענק למדיניות של XML ל-JSON לא תקין או שהוא בפורמט שגוי.

סיבה: חסר מטען ייעודי (payload) בקלט

במדיניות ההמרה מ-XML ל-JSON, אם התוכן (המטען הייעודי) של המשתנה שצוין ברכיב <Source> ריק, מתרחשת השגיאה הזו.

לדוגמה, אם האלמנט <Source> במדיניות ההמרה מ-XML ל-JSON מוגדר כמשתנה request או response והוא אמור להכיל עומס נתונים של XML, השגיאה הזו מתרחשת אם עומס הנתונים ריק.

אבחון

  1. צריך לזהות את מדיניות ה-XML ל-JSON שבה התרחשה השגיאה. המידע הזה מופיע באלמנט faultstring בתשובה לשגיאה. לדוגמה, בfaultstring הבא, שם המדיניות הוא Convert-XMLToJSON:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 1(possibly  around char 0)"
    
  2. בודקים את הרכיב <Source> בקובץ ה-XML של המדיניות להמרת XML ל-JSON שנכשל, ומזהים את המשתנה שצוין. לדוגמה, במדיניות הבאה של XML ל-JSON, הרכיב <Source> מוגדר כבקשה:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
        <DisplayName>Convert-XMLToJSON</DisplayName>
        <Properties/>
        <Options>
            <RecognizeNumber>true</RecognizeNumber>
            <RecognizeBoolean>true</RecognizeBoolean>
            <RecognizeNull>true</RecognizeNull>
        </Options>
        <OutputVariable>request</OutputVariable>
        <Source>request</Source>
    </XMLToJSON>
    
  3. צריך לבדוק אם המשתנה שצוין לרכיב <Source> במדיניות XMLToJSON ריק. אם הוא ריק, זו הסיבה לשגיאה.

    בדוגמה של מדיניות ה-XML ל-JSON שמוצגת למעלה, מטען הנתונים הייעודי (payload) של הבקשה (כלומר, גוף הבקשה) שנשלח על ידי הלקוח היה ריק.

    לדוגמה:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml"
    

    מכיוון שעומס העבודה של בקשת ה-XML ריק, מופיע קוד השגיאה:

    steps.xml2json.ExecutionFailed
    

    השגיאה הזו יכולה לקרות גם אם הרכיב <Source> מוגדר לתגובה, אבל מטען ייעודי (payload) ריק מועבר על ידי שרת הקצה העורפי.

רזולוציה

חשוב לוודא שהקלט שמוענק למדיניות של XML ל-JSON דרך הרכיב <Source> הוא עומס עבודה חוקי של XML ולא ריק.

כדי לפתור את הבעיה במדיניות לדוגמה של המרת XML ל-JSON, צריך להעביר עומס נתונים חוקי של XML. לדוגמה:

  1. יוצרים קובץ בשם city.xml עם התוכן הבא:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    </root>
    
  2. מריצים את קריאת ה-API באמצעות פקודת cURL באופן הבא:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml" -X POST -d @company.xml
    

הסיבה: קלט לא חוקי או פגום

אם המדיניות בנושא XML ל-JSON תנתח קלט לא חוקי או שגוי, תתקבל השגיאה הזו.

לדוגמה, אם ה-XML הלא תקין הבא מסופק כקלט במדיניות XML ל-JSON,

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <City>Bengaluru</City>
   <Name>Apigee</Name>
   <Pincode>560016</Pincode>

תופיע השגיאה הבאה:

"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly  around char 0)"

אבחון

  1. מאתרים את המדיניות להמרת XML ל-JSON שבה אירעה השגיאה. המידע הזה מופיע ברכיב faultstring של תגובת השגיאה. לדוגמה, בfaultstring הבא, שם המדיניות הוא Convert-XMLToJSON:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly  around char 0)"
    
  2. בודקים את הרכיב <Source> שצוין במדיניות ה-XML ל-JSON שנכשלה. לדוגמה, במדיניות הבאה להמרת XML ל-JSON, הרכיב <Source> מוגדר למשתנה request:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
        <DisplayName>Convert-XMLToJSON</DisplayName>
        <Properties/>
        <Options>
            <RecognizeNumber>true</RecognizeNumber>
            <RecognizeBoolean>true</RecognizeBoolean>
            <RecognizeNull>true</RecognizeNull>
        </Options>
        <OutputVariable>request</OutputVariable>
        <Source>request</Source>
    </XMLToJSON>
    
  3. מאמתים אם הקלט שצוין ברכיב <Source> במדיניות של XML ל-JSON הוא עומס נתונים חוקי של XML. אם הקלט לא תקין או שהפורמט שלו שגוי, זו הסיבה לשגיאה.

    במדיניות לדוגמה XML ל-JSON שמוצגת למעלה, ה-XML הלא חוקי הבא הועבר למדיניות חילוץ משתנים באמצעות הקובץ city.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    

    זוהי קריאת ה-API לדוגמה שמראה איך הבקשה הועברה:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltpjson" -H "Content-Type: application/xml" -X POST -d @city.xml
    

    המטען הייעודי (payload) של XML שמועבר ל-API לא חוקי, כי ה-XML לא כולל תג סיום עבור הרכיב <root>. לכן מופיע קוד השגיאה:

    steps.xml2json.ExecutionFailed
    

    השגיאה הזו יכולה להתרחש גם אם רכיב <Source> הוגדר לתגובה, אבל עומס העבודה בתשובת ה-XML משרת הקצה העורפי לא תקין או לא בפורמט תקין.

רזולוציה

צריך לוודא שהקלט שמועבר למדיניות XML ל-JSON דרך הרכיב <Source> תקין ולא פגום.

כדי לפתור את הבעיה במדיניות לדוגמה של XML ל-JSON שצוינה למעלה, מעבירים בקשה תקפה של מטען ייעודי (payload) של XML באופן הבא:

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <City>Bengaluru</City>
   <Name>Apigee</Name>
   <Pincode>560016</Pincode>
</root>

OutputVariableIsNotAvailable

קוד שגיאה

steps.xml2json.OutputVariableIsNotAvailable

גוף התגובה לשגיאה

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: Output variable is not available.",
        "detail": {
            "errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
        }
    }
}

הודעת שגיאה לדוגמה

{
    "fault": {
        "faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available.",
        "detail": {
            "errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
        }
    }
}

סיבה

השגיאה הזו מתרחשת אם המשתנה שצוין ברכיב <Source> של המדיניות להמרת XML ל-JSON הוא מסוג מחרוזת והרכיב <OutputVariable> לא מוגדר. הרכיב <OutputVariable> הוא רכיב חובה כשהמשתנה שמוגדר ברכיב <Source> הוא מסוג string.

אבחון

  1. מאתרים את המדיניות להמרת XML ל-JSON שבה אירעה השגיאה. אפשר למצוא את זה ברכיב faultstring של תגובת השגיאה. לדוגמה, ב-faultstring הבא, שם המדיניות הוא Convert-XMLToJSON:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."
    
  2. במדיניות ה-XML שנכשלה, יש לאמת אם <OutputVariable> חסר.

    לפניכם דוגמה למדיניות XML ל-JSON שבה חסר הרכיב <OutputVariable>.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
        <DisplayName>Convert-XMLToJSON</DisplayName>
        <Properties/>
        <Format>google</Format>
        <Source>TrackingNumber</Source>
    </XMLToJSON>
    
    
  3. קובעים את סוג המשתנה שמצוין ברכיב <Source>:

    1. מאתרים את הקוד בחבילת שרת ה-proxy ל-API, שבו המשתנה הוגדר לראשונה.
    2. אחרי שמוצאים את המדיניות שבה המשתנה מוגדר ומאוכלס קודם, צריך לקבוע את סוג המשתנה באופן הבא:
      1. בודקים את הערך של מאפיין הסוג (אם הוא קיים).
      2. אם מאפיין הסוג לא קיים, המשתנה נחשב למחרוזת.
    3. אם הסוג של המשתנה הוא string, זהו הגורם לשגיאה. מידע על משתנים נפוצים ועל הסוגים שלהם זמין במאמר העזרה בנושא משתנים.

    לדוגמה, אפשר לעיין במשתנה TrackingNumber במדיניות הקודמת להמרת XML ל-JSON. הוא מסוג מחרוזת. עכשיו נבחן מדיניות להקצאת הודעה שמשמשת להגדרת ערך למשתנה שנקרא TrackingNumber, כפי שמוצג בהמשך:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber">
        <DisplayName>Assign_TrackingNumber</DisplayName>
        <Properties/>
        <AssignVariable>
            <Name>TrackingNumber</Name>
            <Value><![CDATA[<Code>560075393539898</Code>]]></Value>
            <Ref/>
        </AssignVariable>
        <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
        <AssignTo createNew="false" transport="http" type="request"/>
    </AssignMessage>
    

    חשוב לשים לב שסוג המשתנה שהוגדר דרך <AssignVariable> הוא מחרוזת. לכן המשתנה TrackingNumber הוא מסוג string.

    עכשיו, חשוב לזכור שהמשתנה TrackingNumber משמש ברכיב <Source> של המדיניות להמרת XML ל-JSON:

    <Source>TrackingNumber</Source>
    

    מכיוון ש-TrackingNumber הוא מסוג מחרוזת ו-<OutputVariable> חסר במדיניות, מופיע קוד השגיאה:

    steps.xml2json.OutputVariableIsNotAvailable
    

רזולוציה

חשוב לוודא שאם המשתנה שצוין ברכיב <Source> של מדיניות XMLToJSON הוא מסוג מחרוזת, במקרה הזה הרכיב <OutputVariable> הוא חובה.

כדי לתקן את המדיניות של המרת XML ל-JSON שצוינה למעלה, צריך לכלול את האלמנט <OutputVariable> כפי שמוצג בהמשך.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
    <DisplayName>Convert-XMLToJSON</DisplayName>
    <Properties/>
    <Format>google</Format>
    <OutputVariable>response</OutputVariable>
    <Source>TrackingNumber</Source>
</XMLToJSON>

InCompatibleTypes

קוד שגיאה

steps.xml2json.InCompatibleTypes

גוף התגובה לשגיאה

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: String can not be assigned to message type.",
        "detail": {
            "errorcode": "steps.xml2json.InCompatibleTypes"
        }
    }
}

הודעת שגיאה לדוגמה

{
    "fault": {
        "faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type.",
        "detail": {
            "errorcode": "steps.xml2json.InCompatibleTypes"
        }
    }
}

סיבה

השגיאה הזו מתרחשת אם הסוג של המשתנה שמוגדר ברכיב <Source> שונה מהסוג של המשתנה שמוגדר ברכיב <OutputVariable>. חובה שהסוג של המשתנים שמופיעים ברכיב <Source> וברכיב <OutputVariable> יהיה זהה.

The valid types are message and string.

אבחון

  1. מאתרים את המדיניות להמרת XML ל-JSON שבה אירעה השגיאה. אפשר למצוא את זה ברכיב faultstring של תגובת השגיאה. לדוגמה, בfaultstring הבא, שם המדיניות הוא XMLToJSON_CheckType:

    "faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."
    
  2. במדיניות XML ל-JSON שנכשלה, שימו לב לערכים שצוינו ב-<OutputVariable>.

    הנה דוגמה למדיניות XMLToJSON שחסר בה רכיב <OutputVariable>

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType">
        <DisplayName>XMLToJSON_CheckType</DisplayName>
        <Properties/>
        <Format>google</Format>
        <OutputVariable>request</OutputVariable>
        <Source>TrackingNumber</Source>
    </XMLToJSON>
    
  3. קובעים את סוג המשתנה שצוין ברכיבים <Source> ו-<OutputVariable>:

    1. מאתרים את הקוד בחבילת ה-API Proxy, שבה כל אחד מהמשתנים האלה הוגדר לראשונה.
    2. אחרי שמוצאים את המדיניות שבה המשתנה מוגדר ומאוכלס קודם, צריך לקבוע את סוג המשתנה באופן הבא:
      1. בודקים את הערך של מאפיין הסוג (אם הוא קיים).
      2. אם מאפיין הסוג לא קיים, המשתנה נחשב למחרוזת.
    3. אם סוג המשתנה שצוין ב-<Source> הוא string והסוג <OutputVariable> הוא הודעה או להיפך, זו הסיבה לשגיאה. מידע על משתנים נפוצים ועל הסוגים שלהם זמין במאמר העזרה בנושא משתנים.

    לדוגמה, נניח שרוצים להשתמש במדיניות Assign Message כדי להקצות ערך למשתנה שנקרא TrackingNumber, כפי שמתואר בהמשך:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber">
        <DisplayName>Assign_TrackingNumber</DisplayName>
        <Properties/>
        <AssignVariable>
            <Name>TrackingNumber</Name>
            <Value><![CDATA[<Code>560075393539898</Code>]]></Value>
            <Ref/>
        </AssignVariable>
        <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
        <AssignTo createNew="false" transport="http" type="request"/>
    </AssignMessage>
    

    הערה: סוג המשתנה שמוגדר באמצעות <AssignVariable> הוא מחרוזת. לכן המשתנה TrackingNumber הוא מסוג string.

    עכשיו, חשוב לזכור שהמשתנה TrackingNumber משמש ברכיב <Source> של המדיניות XMLToJSON:

    <Source>TrackingNumber</Source>
    

    באופן דומה, חשוב לזכור שהמשתנה request משמש ברכיב <OutputVariable> של המדיניות להמרת XML ל-JSON:

    <OutputVariable>request</OutputVariable>
    

    מכיוון ש-TrackingNumber הוא מסוג string ומשתנה response הוא מסוג message, מדובר בסוגים לא תואמים ולכן מופיע קוד השגיאה:

    steps.xml2json.InCompatibleTypes
    

    השגיאה שלמעלה יכולה להתרחש גם אם המשתנה ברכיב <Source> הוא מסוג message, אבל המשתנה ברכיב <OutputVariable> הוא מסוג מחרוזת.

רזולוציה

חשוב לוודא שהסוג של המשתנה שמוגדר ברכיב <Source> וברכיב <OutputVariable> תמיד זהה. חובה שהסוג של המשתנים שמופיעים ברכיב <Source> וברכיב <OutputVariable> יהיה זהה.

כדי לתקן את המדיניות של XML ל-JSON שצוינה למעלה, אפשר להצהיר על משתנה TrackingNumber_output נוסף מסוג string באמצעות המדיניות Assign Message, ולהשתמש במשתנה הזה ברכיב <OutputVariable> של המדיניות XML ל-JSON.

שינוי במדיניות 'הקצאת הודעות':

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber">
    <DisplayName>Assign_TrackingNumber</DisplayName>
    <Properties/>
    <AssignVariable>
        <Name>TrackingNumber</Name>
        <Value><![CDATA[<Code>560098</Code>]]></Value>
        <Ref/>
    </AssignVariable>
    <AssignVariable>
        <Name>TrackingNumber_output</Name>
        <Ref/>
    </AssignVariable>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

מדיניות XMLToJSON ששונתה:

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType">
      <DisplayName>XMLToJSON_CheckType</DisplayName>
      <Properties/>
      <Format>google</Format>
      <OutputVariable>TrackingNumber_output</OutputVariable>
      <Source>TrackingNumber</Source>
  </XMLToJSON>

InvalidSourceType

קוד שגיאה

steps.xml2json.InvalidSourceType

גוף התגובה לשגיאה

{
    "fault": {
        "faultstring": "XMLToJSON[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].",
        "detail": {
            "errorcode": "steps.xml2json.InvalidSourceType"
        }
    }
}

הודעת שגיאה לדוגמה

{
    "fault": {
        "faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string].",
        "detail": {
            "errorcode": "steps.xml2json.InvalidSourceType"
        }
    }
}

סיבה

השגיאה הזו מתרחשת אם הסוג של המשתנה שמשמש להגדרת הרכיב <Source> לא תקין.סוגי המשתנים התקינים הם message ו-string.

אבחון

  1. מזהים את סוג המקור הלא חוקי שנעשה בו שימוש במדיניות XML ל-JSON. המידע הזה מופיע בהודעת השגיאה. לדוגמה, בשגיאה הבאה, הסוג הלא חוקי הוא integer.

    "faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
    
  2. לבדוק את כל כללי המדיניות של XML ל-JSON בשרת ה-proxy הספציפי ל-API שבו התרחש הכשל. במדיניות XML ל-JSON שנכשלה, שימו לב לשם המשתנה שצוין ב-<Source>.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType">
        <DisplayName>XMLToJSON_CheckType</DisplayName>
        <Properties/>
        <Format>google</Format>
        <OutputVariable>response</OutputVariable>
        <Source>BookCode</Source>
    </XMLToJSON>
    
  3. קובעים את סוג המשתנה שצוין ברכיב <Source>:

    1. מאתרים את הקוד בתוך חבילת ה-API של שרת ה-proxy, שבה המשתנה הזה הוגדר ראשון.
    2. אחרי שמוצאים את המדיניות שבה המשתנה מוגדר ומאוכלס קודם, צריך לקבוע את סוג המשתנה באופן הבא:
      1. בודקים את הערך של מאפיין הסוג (אם הוא קיים).
      2. אם מאפיין הסוג לא קיים, המשתנה נחשב למחרוזת.
    3. אם הסוג של המשתנה שצוין ב-<Source> הוא לא message ולא string, זו הסיבה לשגיאה. מידע נוסף על משתנים נפוצים והסוגים שלהם זמין בחומר העזר בנושא משתנים.

    לדוגמה, נניח שמדיניות ExtractVariables משמשת לחילוץ הערך ממטען נתונים של XML, ומגדירה את הערך של המשתנה BookCode כסוג integer, כפי שמוצג בהמשך:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract_BookCode">
        <DisplayName>Extract_BookCode</DisplayName>
        <Properties/>
        <Source>request</Source>
        <XMLPayload stopPayloadProcessing="false">
            <Variable name="BookCode" type="integer">
                <XPath>/root/BookCode</XPath>
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    

    עכשיו צריך לזכור שהמשתנה BookCode נמצא בשימוש ברכיב <Source> במדיניות XML ל-JSON:

    <Source>BookCode</Source>
    

    מכיוון שהסוג של המשתנה הזה הוא Integer, שהוא לא סוג תקין של <Source>, שרת ה-proxy של ה-API נכשל עם השגיאה:

    steps.xml2json.InvalidSourceType
    

רזולוציה

מוודאים שהסוג של המשתנה שמשמש לציון הרכיב <Source> תקין. סוגי <Source> חוקיים הם message ו-string.

כדי להימנע מהשגיאה שלמעלה במדיניות של XML ל-JSON, אפשר להשתמש במשתנה request שהוא מסוג message או בכל מחרוזת אחרת שהיא עומס עבודה תקין של XML.