אתם צופים במסמכי העזרה של 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
, שלא קיים בתהליך הבקשה.
אבחון
מזהים את מדיניות ה-XML ל-JSON שבה התרחשה השגיאה ואת שם המשתנה שלא זמין. שני הפריטים האלה מופיעים ברכיב
faultstring
בתשובה לשגיאה. לדוגמה, ב-faultstring
הבא, שם המדיניות הואConvert-XMLToJSON
והמשתנה הואresponse
:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"
ב-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>
קובעים אם המשתנה שנעשה בו שימוש ברכיב
<Source>
מוגדר וזמין בתהליך שבו מתבצעת מדיניות XML ל-JSON.אם המשתנה הוא:
- לא בהיקף (לא זמין בתהליך הספציפי שבו המדיניות מופעלת) או
- לא ניתן לפתור (לא מוגדר)
אז זה הגורם לשגיאה.
לדוגמה, נניח שמדיניות ה-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, השגיאה הזו מתרחשת אם עומס הנתונים ריק.
אבחון
צריך לזהות את מדיניות ה-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)"
בודקים את הרכיב
<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>
צריך לבדוק אם המשתנה שצוין לרכיב
<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. לדוגמה:
יוצרים קובץ בשם city.xml עם התוכן הבא:
<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
מריצים את קריאת ה-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)"
אבחון
מאתרים את המדיניות להמרת 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)"
בודקים את הרכיב
<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>
מאמתים אם הקלט שצוין ברכיב
<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
.
אבחון
מאתרים את המדיניות להמרת XML ל-JSON שבה אירעה השגיאה. אפשר למצוא את זה ברכיב
faultstring
של תגובת השגיאה. לדוגמה, ב-faultstring
הבא, שם המדיניות הואConvert-XMLToJSON
:"faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."
במדיניות ה-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>
קובעים את סוג המשתנה שמצוין ברכיב
<Source>
:- מאתרים את הקוד בחבילת שרת ה-proxy ל-API, שבו המשתנה הוגדר לראשונה.
- אחרי שמוצאים את המדיניות שבה המשתנה מוגדר ומאוכלס קודם, צריך לקבוע את סוג המשתנה באופן הבא:
- בודקים את הערך של מאפיין הסוג (אם הוא קיים).
- אם מאפיין הסוג לא קיים, המשתנה נחשב למחרוזת.
- אם הסוג של המשתנה הוא
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.
אבחון
מאתרים את המדיניות להמרת XML ל-JSON שבה אירעה השגיאה. אפשר למצוא את זה ברכיב
faultstring
של תגובת השגיאה. לדוגמה, בfaultstring
הבא, שם המדיניות הואXMLToJSON_CheckType
:"faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."
במדיניות 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>
קובעים את סוג המשתנה שצוין ברכיבים
<Source>
ו-<OutputVariable>
:- מאתרים את הקוד בחבילת ה-API Proxy, שבה כל אחד מהמשתנים האלה הוגדר לראשונה.
- אחרי שמוצאים את המדיניות שבה המשתנה מוגדר ומאוכלס קודם, צריך לקבוע את סוג המשתנה באופן הבא:
- בודקים את הערך של מאפיין הסוג (אם הוא קיים).
- אם מאפיין הסוג לא קיים, המשתנה נחשב למחרוזת.
- אם סוג המשתנה שצוין ב-
<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
.
אבחון
מזהים את סוג המקור הלא חוקי שנעשה בו שימוש במדיניות XML ל-JSON. המידע הזה מופיע בהודעת השגיאה. לדוגמה, בשגיאה הבאה, הסוג הלא חוקי הוא integer.
"faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
לבדוק את כל כללי המדיניות של 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>
קובעים את סוג המשתנה שצוין ברכיב
<Source>
:- מאתרים את הקוד בתוך חבילת ה-API של שרת ה-proxy, שבה המשתנה הזה הוגדר ראשון.
- אחרי שמוצאים את המדיניות שבה המשתנה מוגדר ומאוכלס קודם, צריך לקבוע את סוג המשתנה באופן הבא:
- בודקים את הערך של מאפיין הסוג (אם הוא קיים).
- אם מאפיין הסוג לא קיים, המשתנה נחשב למחרוזת.
- אם הסוג של המשתנה שצוין ב-
<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.