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

כדי לתקן את המדיניות לדוגמה בפורמט 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) של הקלט (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 של מדיניות 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 ל-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
    

    עומס העבודה של ה-XML שהוענק ל-API לא תקין, כי ל-XML אין תג סוגר לרכיב <root>. לכן מופיע קוד השגיאה:

    steps.xml2json.ExecutionFailed
    

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

    עכשיו צריך לזכור שהמשתנה 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 שנכשלה, יש לשים לב לערכים שצוינו ב-<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 שנכשלה, חשוב לשים לב לשם המשתנה שצוין ב-<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.