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

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

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 אם התוכן (payload) של המשתנה שצוין ברכיב <Source> ריק, השגיאה הזו מתרחשת.

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

אבחון

  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> הוא מטען ייעודי (payload) חוקי ב-XML, ושהוא לא ריק.

כדי לתקן את הבעיה במדיניות ה-XML לדוגמה ל-JSON, צריך להעביר מטען ייעודי (payload) חוקי ב-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 שנכשל במדיניות ה-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 הוא מטען ייעודי (payload) חוקי ב-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> הוגדר כתגובה, אבל המטען הייעודי (payload) של תגובת ה-XML משרת הקצה העורפי לא חוקי או שגוי.

רזולוציה

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

כדי לתקן את הבעיה במדיניות ה-XML לדוגמה ל-JSON שפורטה למעלה, יש להעביר בקשה חוקית למטען ייעודי של 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 ל-JSON שנכשלו, מאמתים אם חסר <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. מאתרים את הקוד בחבילה של שרת ה-API של שרת ה-proxy, במקום שבו המשתנה הוגדר קודם.
    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 הוא מסוג מחרוזת.

    עכשיו צריך לזכור שהמשתנה TrackingNumber נמצא בשימוש ברכיב <Source> של המדיניות מסוג XML To 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 To 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 של שרת ה-API, שבה כל אחד מהמשתנים האלה הוגדר קודם.
    2. אחרי שמבינים מהי המדיניות שבה המשתנה מוגדר ומאוכלס קודם, צריך לקבוע את הסוג של המשתנה באופן הבא:
      1. בודקים את הערך של מאפיין הסוג (אם יש כזה).
      2. אם מאפיין הסוג לא קיים, המשתנה נחשב למחרוזת.
    3. אם סוג המשתנה שצוין ב-<Source> הוא string בעוד שסוג המשתנה <OutputVariable> הוא הודעה או להיפך, זו הסיבה לשגיאה. מידע נוסף על משתנים נפוצים ועל הסוגים שלהם זמין בחומר העזר בנושא משתנים.

    לדוגמה, נתייחס למדיניות בנושא הקצאת הודעות שמשמשת להגדרת ערך למשתנה שנקרא 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 הוא מסוג מחרוזת.

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

    <Source>TrackingNumber</Source>
    

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

    <OutputVariable>request</OutputVariable>
    

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

    steps.xml2json.InCompatibleTypes
    

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

רזולוציה

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

כדי לתקן את המדיניות בנושא XML ל-JSON שתוארה למעלה, אפשר להצהיר על משתנה נוסף TrackingNumber_output מסוג string באמצעות הקצאת מדיניות הודעות ולהשתמש במשתנה הזה ברכיב <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. המידע הזה מופיע בהודעת השגיאה. לדוגמה, בדוגמה הבאה, הסוג הלא חוקי הוא מספר שלם.

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

    כדוגמה, נתייחס למדיניות בנושא extracts שמשמשת לחילוץ הערך ממטען ייעודי (payload) של 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 To JSON:

    <Source>BookCode</Source>
    

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

    steps.xml2json.InvalidSourceType
    

רזולוציה

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

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